来自语料库的平均向量

时间:2018-03-23 20:19:00

标签: python vector directory spacy documents

我如何使用下面的代码浏览文档文件夹并获取每个文档的矢量值,然后平均整体值?

documents_list = ['Hello, world','Here are two sentences.']
for doc in documents_list:
    doc_nlp = nlp(doc)
    print(doc_nlp.vector)
    for token in doc_nlp:
        print(token.text,token.vector)

2 个答案:

答案 0 :(得分:0)

我不确定你的文件是什么意思(我不熟悉spacy),但是如果你想要平均值,那么你可以将每个向量添加到列表中,然后在for循环之后,做:

avg = sum(vectors_list) / len(vectors_list)

答案 1 :(得分:0)

您似乎想要在句子级别上获得平均向量,但您的示例显示了令牌级别向量表示。

句子等级

平均句子向量可以通过以下方式完成:

>>> import numpy as np
>>> np.array([nlp(doc).vector for doc in documents_list]).mean(axis=0)

这将为documents_list

中的所有句子返回单个平均向量

令牌级别

您可以通过执行以下操作在令牌级别实现相同的目标:

>>> [np.array([token.vector for token in nlp(doc)]).mean(axis=0) for doc in documents_list]

这将为您提供每个句子的标记平均单词向量列表。基本上是长度为len(documents_list)

的向量列表

旁注

作为旁注,平均向量不会真正保留语义结构,因为它隐含地声称本地上下文等同于它的更广泛的上下文。在较小的窗口环境中,连接可能是更好的选择。

确保测试您的域和任务的结果,它可以很好地完成您的任务,具体取决于您的假设。