繁体   English   中英

如何从 python 中的 .vec 文件中读取和提取数据

[英]How to read and extract data from .vec file in python

如何从 python 中的.vec文件中读取和提取数据?

f = open("test.vec","r") # opens file with name of "test.txt"
print(f.read())
f.close() 

但我无法提取信息。 我希望数据将存储在test.vec文件中的单个 arrays 中。

我想你可以从这里的这个项目中得到一些启发。 对您来说重要的部分从第 131 行开始,即

...
with open(f, 'rb') as vecfile:  
    content = ''.join(str(line) for line in vecfile.readlines())
    val = struct.unpack('<iihh', content[:12])
...

这是我的数据集: https://www.kaggle.com/datasets/yekenot/fasttext-crawl-300d-2m

它是 Common Crawl 4.2 GB vec 文件。

由于文件太大而无法在 IDE 中显示。 我逐行阅读并导出到 CSV (17 MB)

def load_vectors(fname):
   fin = io.open(fname, 'r', encoding='utf-8', newline='\n', errors='ignore')
   x = fin.readline().split()
   all = []
   while x:
     all.append(x[0])
     x = fin.readline().split()
   df = pd.DataFrame(all)
   df.to_csv('.../output/ft.csv',index=False)

在此处调用 function:

FASTTEXT_DATASET_PATH = '/content/drive/MyDrive/Colab Notebooks/pretrained/crawl-300d-2M.vec'
load_vectors(FASTTEXT_DATASET_PATH)

x 的维度是 (1999995, 300)

这里我打印第一行: [',', '-0.0282', '-0.0557', ... '-0.0042']

就我而言,我只想导出每个列表的第一个元素。 所以我将 append x[0] 放到一个名为“all”的列表中。 然后我将其转换为 dataframe 并导出到 csv 文件。

对于那些有兴趣查看 FastText 预训练数据集的样子的人,我已将其上传到 Kaggle 数据集的详细信息: crawl-300d-2M.vec.zip:在 Common Crawl 上训练的 200 万个词向量(600B 令牌)- 大小写

with open("file.txt", "r") as ins:
    array = []
    for line in ins:
        array.append(line)

试试这个。 这有点复杂。 否则试试这个简单的。

with open('filename') as f:
    lines = f.readlines()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM