目前使用 gensim 4.0 庫來撰寫代碼。但是,我不知道為什么它總是找不到相似的詞。起初,當我設定 min_count = 5 時,錯誤是,它希望我先構建一個詞匯,但在我將其減少到 min_count = 1 后,它說,關鍵錯誤不存在......資料集的完整代碼在這里:https ://github.com/JYjunyang/FYPDEMO我是不是寫錯了什么或者遺漏了一些重要的步驟?一切正常,但只是這個 word2vec 實作......將感謝提供的每一個指導...... 注意:LemmaColumn 是詞形還原后的資料框
def FeaturesExtraction():
word2vec =
Word2Vec(sentences=LemmaColumn,vector_size=100,window=5,min_count=1,workers=8,sg=1)
b1 = time.time()
train_time = time.time() - b1
print(word2vec.wv.most_similar('virus', topn=10))
而且我不知道為什么,在用 10k 資料訓練后,詞匯表中的唯一詞只有 7 個:
word #0/7 is t
word #1/7 is l
word #2/7 is x
word #3/7 is e
word # 4/7 是 _
字 #5/7 是 u
字 #6/7 是 f
uj5u.com熱心網友回復:
您的LemmaColumn變數可能不是引數Word2Vec所需的格式sentences。它需要一個 Python 序列:可以多次迭代的東西,比如一個串列,或者另一個可重復的物件。在這個序列中,每個單獨的專案本身必須是一個字串標記串列(單詞)。
相反,您的小詞匯量是我希望看到的:
LemmaColumn = [
['f', 'u', 'l', 'l', '-', 't', 'e', 'x', 't'],
]
…甚至…
LemmaColumn = [
['full-text'],
]
…因為 Python 很樂意將純字串(如'full-text')視為一個包含 1 個字符的字串的串列。因此,您的整個訓練詞匯只是該單個字串的字符——可能是列名,而不是您要使用的列資料。
仔細檢查LemmaColumn. 對列的資料執行必要的轉換,使其成為Word2Vec預期的序列,并在嘗試之前確認它看起來合理Word2Vec。
另外:登錄到至少該INFO級別運行將顯示更多模型的進度,并且當您學會理解報告的步驟/進度時,諸如奇怪的低文本/單詞計數或將采取的步驟如果他們正在處理立即完成的正確數量(大量)的資料,那么時間將很快顯現出來。
最后,請注意,min_count=1對于 word2vec 之類的演算法,這本質上總是一個壞主意。好的向量僅來自同一單詞用法的多個不同示例——因此默認為min_count=5. 保留稀有詞不僅會導致這些稀有詞的向量很差,而且自然語言文本往往有很多這樣的稀有詞這一事實意味著模型的大量時間和空間都用于(幾乎沒有希望的)任務改善其他附近詞向量也受到影響的垃圾詞向量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/465901.html
上一篇:手動ROC曲線與sklearn.metrics不匹配
下一篇:獲取SVM錯誤預測的影像名稱
