model1 = Word2Vec(words_list_no_dupes, min_count=0,size= 20,workers=3, window =3, sg = 1)
print(model1)
print(len(model1.wv.vocab))
print(model.wv.vectors.shape)
输出: Word2Vec(声音=58,大小=20,字母=0.025) 58 (31752,20)
但是,当我检查以查看形成模型的列表的长度时
print(len(words_list_no_dupes))
输出:
1906年
这是什么原因造成的? 我用来从列表中删除重复项的完整代码如下:
words = []
for r in range(0,len(df)):
temp = []
for word in nltk.tokenize.WhitespaceTokenizer().tokenize(df["CAR NAME"][r]):
temp.append(word.lower())
words.append(temp)
words_flat_list = [item for sublist in words for item in sublist]
def remove_duplicates(x):
return list(dict.fromkeys(x))
words_list_no_dupes = remove_duplicates(words_flat_list)
词汇量将是在训练语料库中看到的唯一标记的数量
它与语料库(
len(words_list_no_dupes)
)中文本的长度和数量没有任何必要的关系,因为每个文本本身应该有许多单词,包括许多从其他文本重复的单词如果你的语料库不是这样的——如果每个文本只有一两个单词,比如一个汽车名称,并且没有单词在文本之间重复——那么你的语料库不适合word2vec培训。Word2vec需要很多关于每个单词用法的例子,在不同的上下文中,周围的单词会有不同的混合
也就是说,您显示的输出有点奇怪:
len(model1.wv.vocab)
应该与model.wv.vectors.shape[0]
大小相同–但是您的输出显示58,然后是31752。您确定这些是您的跑步记录值吗此外,您的“我用来从列表中删除重复项的完整代码”在意图和效果上都有点混乱。在你的问题中,你可以在列表的开头和结尾展示一些例子,也许可以揭示为什么它不是
Word2Vec
的正确输入。例如,words_flat_list
中的前几项是什么那么
words_list_no_dupes
中的前几项是什么这就是你所期待的吗
您正在传递给
words_list_no_dupes
的是它期望的Word2Vec
吗?这是一个Python序列,其中每个项都是字符串标记的列表?(如果是其他原因,你应该期待奇怪的结果。)相关问题 更多 >
编程相关推荐