簡體   English   中英

平均來自語料庫的向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM