菜鳥一枚,研究了兩天實在是不知道怎么解決,請教各位大神!
我用的是Python2.7.10,gensim版本是0.12.2,目前在學習doc2vec模型。
我在看官方教程(http://radimrehurek.com/gensim/models/doc2vec.html)的時候,一開始就過不了了,教程說:
Make sure you have a C compiler before installing gensim, to use optimized (compiled) doc2vec training (70x speedup [blog]).
Initialize a model with e.g.:
>>> model = Doc2Vec(documents, size=100, window=8, min_count=5, workers=4)
Persist a model to disk with:
>>> model.save(fname)
>>> model = Doc2Vec.load(fname) # you can continue training with the loaded model!
The model can also be instantiated from an existing file on disk in the word2vec C format:
>>> model = Doc2Vec.load_word2vec_format('/tmp/vectors.txt', binary=False) # C text format
>>> model = Doc2Vec.load_word2vec_format('/tmp/vectors.bin', binary=True) # C binary format
我的代碼如下,其中negForPy.txt大概長這樣:
標準間太差 房間還不如3星的 而且設施非常陳舊.建議酒店把老的標準間從新改善.
服務態度極其差,前臺接待好象沒有受過培訓,連基本的禮貌都不懂,竟然同時接待幾個客人;大堂副理更差,跟客人辯解個沒完,要總經理的電話投訴竟然都不敢給。要是沒有作什么虧心事情,跟本不用這么怕。
地理位置還不錯,到哪里都比較方便,但是服務不象是豪生集團管理的,比較差。下午睡了一覺并洗了一個澡,本來想讓酒店再來打掃一下,所以,打開了,請打掃的服務燈,可是到晚上回酒店,發現打掃得服務燈被關掉了,而房間還是沒有打掃過。
1。我住的是靠馬路的標準間。房間內設施簡陋,并且的房間玻璃窗戶外還有一層幕墻玻璃,而且不能打開,導致房間不能自然通風,采光不好。2。吃了三頓早餐,品種少得可憐。3。二樓餐廳被租出去了,價格特貴。原來訂餐時告之房客可以打九折(房間服務指南里也明明白白寫的,等到結帳時卻告之海鮮和酒水是不能打折的,而且沒有發票,找來經理才好不容易在第二天拿到發票。綜合來說與四星級差距太大了!
1。我住的是靠馬路的標準間。房間內設施簡陋,并且的房間玻璃窗戶外還有一層幕墻玻璃,而且不能打開,導致房間不能自然通風,采光不好。2。吃了三頓早餐,品種少得可憐。3。二樓餐廳被租出去了,價格特貴。原來訂餐時告之房客可以打九折(房間服務指南里也明明白白寫的,等到結帳時卻告之海鮮和酒水是不能打折的,而且沒有發票,找來經理才好不容易在第二天拿到發票。綜合來說與四星級差距太大了!
#encoding: utf-8
from gensim.models.doc2vec import Doc2Vec
with open('negForPy.txt','r') as infile:
documents = infile.readlines()
model =Doc2Vec(documents,size=100,window=8,min_count=5,workers=4)
model = Doc2Vec.load_word2vec_format('vectors1.txt', binary = False)
第8行和之前的代碼是不同的兩種方法,我分開運行不管哪種方法都會報錯,比如就像上面那樣的代碼直接運行,報錯是:
Traceback (most recent call last):
File "E:\zzWorkFiles\ZZworkspace\Practise1\src\Prac1\draft2.py", line 6, in <module>
model =Doc2Vec(["aaaa","andajfiaihe","dfghiah","adoifjeng"],size=100,window=8,min_count=5,workers=4)
File "D:\programFiles\Python2.7.10\lib\site-packages\gensim-0.12.2-py2.7-win32.egg\gensim\models\doc2vec.py", line 584, in __init__
self.build_vocab(documents, trim_rule=trim_rule)
File "D:\programFiles\Python2.7.10\lib\site-packages\gensim-0.12.2-py2.7-win32.egg\gensim\models\word2vec.py", line 495, in build_vocab
self.scan_vocab(sentences, trim_rule=trim_rule) # initial survey
File "D:\programFiles\Python2.7.10\lib\site-packages\gensim-0.12.2-py2.7-win32.egg\gensim\models\doc2vec.py", line 627, in scan_vocab
document_length = len(document.words)
AttributeError: 'str' object has no attribute 'words'
這種情況下應該怎么解決處理呢??
跪求大神解答!
uj5u.com熱心網友回復:
gensim.models.doc2vec.TaggedLineDocument(file)先處理下輸入資料,再代入模型uj5u.com熱心網友回復:
你好!
根據我對您的提示的理解,把代碼改成這樣:
import gensim
from gensim.models.doc2vec import Doc2Vec
with open('negForPy.txt','r') as infile:
documents = infile.readlines()
gensim.models.doc2vec.TaggedLineDocument(documents)
model =Doc2Vec(documents,size=100,window=8,min_count=5,workers=4)
可是還是報錯:
Traceback (most recent call last):
File "E:\zzWorkFiles\ZZworkspace\Practise1\src\Prac1\draft2.py", line 31, in <module>
model =Doc2Vec(documents,size=100,window=8,min_count=5,workers=4)
File "D:\programFiles\Python2.7.10\lib\site-packages\gensim-0.12.2-py2.7-win32.egg\gensim\models\doc2vec.py", line 584, in __init__
self.build_vocab(documents, trim_rule=trim_rule)
File "D:\programFiles\Python2.7.10\lib\site-packages\gensim-0.12.2-py2.7-win32.egg\gensim\models\word2vec.py", line 495, in build_vocab
self.scan_vocab(sentences, trim_rule=trim_rule) # initial survey
File "D:\programFiles\Python2.7.10\lib\site-packages\gensim-0.12.2-py2.7-win32.egg\gensim\models\doc2vec.py", line 627, in scan_vocab
document_length = len(document.words)
AttributeError: 'str' object has no attribute 'words'
能再說詳細些嗎?
uj5u.com熱心網友回復:
樓主,解決了嗎? 同求?怎么解決的uj5u.com熱心網友回復:
并沒有解決...我在其他地方看到有人說是Python及各種庫的版本問題,通過降低版本可以解決,然后就沒有然后了...
uj5u.com熱心網友回復:
你這個問題怎么解決的,我也遇到了類似的問題uj5u.com熱心網友回復:
1樓的意思應該是
documents = gensim.models.doc2vec.TaggedLineDocument(documents
...
uj5u.com熱心網友回復:
這樣之后還是報錯,
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
怎么使用gensim中的doc2vecuj5u.com熱心網友回復:
我試驗了一下gensim中的test/test_doc2vec.py但顯示Traceback (most recent call last):
File "E:\python\Lib\site-packages\gensim\test\test_doc2vec.py", line 18, in <module>
from six.moves import zip as izip
ImportError: No module named 'six'
怎么解決,我想得到句子的向量
uj5u.com熱心網友回復:
Gensim 1.0.0 版本后移除了 vocab,需使用:model.wv.vocabold version:
gensim_dict.doc2bow(model.vocab.keys(),
allow_update=True)
w2indx = {v: k+1 for k, v in gensim_dict.items()}#所有頻數超過10的詞語的索引
w2vec = {word: model[word] for word in w2indx.keys()}#所有頻數超過10的詞語的詞向量
new version:
gensim_dict.doc2bow(model.wv.vocab,
allow_update=True)
w2indx = {v: k+1 for k, v in gensim_dict.items()}
w2vec = {word: model[word] for word in w2indx.keys()}
uj5u.com熱心網友回復:
你需要使用TagDocument對檔案進行編號from gensim.models.doc2vec import Doc2Vec, TaggedDocument
documents = [TaggedDocument(doc, [i]) for i, doc in enumerate(self.read_vec_words(stopwords))]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/131191.html
上一篇:大神快來
