Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Gensim:训练时丢失单词/标记_Python_Gensim_Word2vec - Fatal编程技术网

Python Gensim:训练时丢失单词/标记

Python Gensim:训练时丢失单词/标记,python,gensim,word2vec,Python,Gensim,Word2vec,我有一个由维基媒体转储文件构建的语料库,存储在句子.txt 我有句话要说'नीरजः हाँ माता जी! स्कूल ख़त्म होते सीधा घर आऊँगा' 现在,当我试图提取单词向量时,总是有一两个单词在训练时漏掉了(尽管被包括在要训练的列表中),我得到了keyrerror。 有没有办法改进培训,使其不会经常漏掉单词 这是它确实发生的证据tok.wordtokenize是一个单词标记器sent.drawlist()以及sent.drawlist()返回存储在句子.txt中的语

我有一个由维基媒体转储文件构建的语料库,存储在句子.txt 我有句话要说'नीरजः हाँ माता जी! स्कूल ख़त्म होते सीधा घर आऊँगा'

现在,当我试图提取单词向量时,总是有一两个单词在训练时漏掉了(尽管被包括在要训练的列表中),我得到了keyrerror。 有没有办法改进培训,使其不会经常漏掉单词

这是它确实发生的证据
tok.wordtokenize
是一个单词标记器
sent.drawlist()
以及
sent.drawlist()
返回存储在句子.txt中的语料库中的句子列表


>>句子नीरजः हाँ माता जी! स्कूल ख़त्म होते सीधा घर आऊँगा'
>>>句子=tok.wordtokenize(句子)#tok.wordtokenize()只是一个单词标记器。
>>>句子=sent.drawlist()
>>>句子=[tok.wordtokenize(i)表示句子中的i]
>>>sentences2=sents.drawlist()
>>>句子S2=[tok.wordtokenize(i)表示句子S2中的i]
>>>句子=句子2+句子+句子
>>> "नीरजः" 在句子中#证明单词出现在句子中
真的
>>>句子[0:10]#标记化句子列表。
[['विश्व', 'भर', 'में', 'करोड़ों', 'टीवी', 'दर्शकों', 'की', 'उत्सुकता', 'भरी', 'निगाह', 'के', 'बीच', 'मिस', 'ऑस्ट्रेलिया', 'जेनिफर', 'हॉकिंस', 'को', 'मिस', 'यूनिवर्स-२००४', 'का', 'ताज', 'पहनाया', 'गया'], ['करीब', 'दो', 'घंटे', 'चले', 'कार्यक्रम', 'में', 'विभिन्न', 'देशों', 'की', '८०', 'सुंदरियों', 'के', 'बीच', '२०', 'वर्षीय', 'हॉकिंस', 'को', 'सर्वश्रेष्ठ', 'आंका', 'गया'], ['मिस', 'अमेरिका', 'शैंडी', 'फिनेजी', 'को', 'प्रथम', 'उप', 'विजेता', 'और', 'मिस', 'प्यूरेटो', 'रिको', 'अल्बा', 'रेइज', 'द्वितीय', 'उप', 'विजेता', 'चुनी', 'गई'], ['भारत', 'की', 'तनुश्री', 'दत्ता', 'अंतिम', '१०', 'प्रतिभागियों', 'में', 'ही', 'स्थान', 'बना', 'पाई'], ['हॉकिंस', 'ने', 'कहा', 'कि', 'जीत', 'के', 'बारे', 'में', 'उसने', 'सपने', 'में', 'भी', 'नहीं', 'सोचा', 'था'], ['सौंदर्य', 'की', 'यह', 'शीर्ष', 'प्रतियोगिता', 'क्विटो', 'के', 'कन्वेंशन', 'सेंटर', 'में', 'मंगलवार', 'देर', 'रात', 'शुरू', 'हुई'], ['करीब', '७५००', 'विशिष्ट', 'दर्शकों', 'की', 'मौजूदगी', 'में', 'विश्व', 'की', 'सर्वश्रेष्ठ', 'सुंदरी', 'के', 'चयन', 'की', 'कवायद', 'शुरू', 'हुई'], ['हर', 'चरण', 'के', 'बाद', 'लोगों', 'की', 'सांसे', 'थमने', 'लगतीं'], ['टीवी', 'पर', 'लुत्फ', 'उठा', 'रहे', 'दर्शक', 'अपने', 'देश', 'व', 'क्षेत्र', 'की', 'सुंदरी', 'की', 'प्रतियोगिता', 'में', 'स्थिति', 'के', 'बारे', 'में', 'व्यग्र', 'रहे'], ['फाइनल', 'में', 'पहुंचने', 'वाली', 'पांच', 'प्रतिभागियों', 'में', 'मिस', 'पेराग्वे', 'यानिना', 'गोंजालेज', 'और', 'मिस', 'त्रिनिदाद', 'व', 'टोबैगो', 'डेनियल', 'जोंस', 'भी', 'शामिल', 'थीं']]
>>>model=gensim.models.Word2Vec(句子,大小=10,最小计数=1)
>>>pred=[]
>>>对于句子中的单词:
…pred.append(model.wv[word].tolist())
... 
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
文件“/home/djokester/anaconda3/lib/python3.5/site packages/gensim/models/keyedvectors.py”,第574行,在__
返回self.word\u vec(words)
文件“/home/djokester/anaconda3/lib/python3.5/site packages/gensim/models/keyedvivers.py”,第273行,在word_-vec中
raise KeyError(“单词“%s”不在词汇表“%word”中)
关键字错误:“word'नीरजः' 不在词汇表中”


正如你所看到的,我查了一下这个词“नीरजः“在标记化句子列表中。它存在于我输入Word2Vec培训师的列表中,但在培训后它不在词汇表中。

它不应该“遗漏”标记化语料库中包含的单词,并且至少出现了
minu count
次。因此,如果你得到
keyrerror
,你可以放心t表示在培训期间从未提供相关单词标记

在要复制的示例代码中,请仔细查看:

sentence = "Jack and Jill went up the Hill"
sentence = [word_tokenize(i) for i in sentence]
语句中的
i
将是字符串的每个字符。您的unshown
word\u tokenize()
函数不太可能对单个字符
['J','a','c','k','',''…]执行任何有用的操作
-可能只是把它们作为一个字母列表。然后
+
-将它们附加到其他
句子中
会使
句子
的长度增加30个项目,而不是一个单独的extr
sentence = "Jack and Jill went up the Hill"
sentence = [word_tokenize(i) for i in sentence]