[英]Averaging Vectors from a Corpus
我如何使用下面的代碼瀏覽文檔文件夾並獲取每個文檔的矢量值,然后對總值求平均值?
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)
似乎您希望獲得句子級別的平均向量,但是您的示例顯示了令牌級別的向量表示形式。
平均句子向量可以通過以下方式完成:
>>> 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)
的向量的列表
附帶說明一下,平均向量並不能真正保留語義結構,因為它隱含地宣稱局部上下文與它的更廣泛上下文等效。 在較小的窗口環境中,串聯可能是更好的選擇。
確保測試您的域和任務的結果,根據您的假設,它可以很好地適合您的任務。
我不確定文檔的含義(我不熟悉spacy),但是如果您想要平均值,則可以將每個向量添加到列表中,然后在for循環之后執行:
avg = sum(vectors_list) / len(vectors_list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.