我試圖用Gensim在Persian語言中創建一個word2vec模型,它具有「space」作爲字符分隔符,我使用python 3.5。我遇到的問題是我給了一個文本文件作爲輸入,它返回一個只包含每個字符而不是單詞的模型。我也給其推薦的輸入作爲單詞的列表:word2vec模型由charachters而不是單詞構成
Python Gensim word2vec vocabulary key
它不工作對我來說,我認爲它不考慮的話的序列中的句子,因此不會是正確的。
我做了我輸入一些預處理其中包括:
崩潰多個空格成一個單一的一個
記號化通過拆分上空白
刪除單詞少於3個字符長 刪除停用詞
我把文本給了word2vec,它給了我正確的結果,但是我需要python,所以我的選擇僅限於使用Gensim。
另外我試圖加載由gensim上的word2vec源代碼生成的模型我得到錯誤,所以我需要由Gensim創建word2vec模型。
我的代碼是:
wfile = open('aggregate.txt','r')
wfileRead = wfile.read()
model = word2vec.Word2Vec(wfileRead , size=100)
model.save('Word2Vec.txt')
你用'character-encoding'標記了你的問題,但你似乎並沒有意識到如何處理它。強烈建議您在打開它時明確指定「aggregate.py」的編碼,而不是依賴環境的默認編碼。很可能是默認是(偶然的)正確的選擇,並且你的問題與編碼無關,但這是排除在外的第一件事情之一。 – lenz
@lenz謝謝你的回覆,是的,我檢查編碼。 「aggregate.txt」文件編碼是「utf-8」,它是python 3.5的defult編碼。這不是問題,在這種情況下,我會得到編碼錯誤,它不會給我一個基於特徵的模型。 –
打開讀取/寫入文件時,默認編碼不一定是UTF-8。它取決於你的操作系統配置(例如,在Unix系統上,它取決於環境變量'LC_ALL'),你可以用'locale.getpreferredencoding()'來檢查它是什麼。 – lenz