我已经执行了steps this指南来生成单词的向量表示。
现在我使用的是一个45,000个单词的自定义数据集,我正在运行word2vec。
为了运行,我通过将https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/word2vec/word2vec_basic.py#L57修改为words = read_data('mytextfile.zip')来修改word2vec_basic.py以使用我自己的数据集
我遇到了类似于https://github.com/tensorflow/tensorflow/issues/2777的问题,因此将vocabulary_size减少到了200。它现在运行,但结果似乎没有捕获上下文。例如,以下是示例输出:
Nearest to Leave: Employee, it, •, due, You, appeal, Employees, which,我可以从这个输出中推断出什么?增加/减少vocabulary_size会改善结果吗?
我使用python3,所以我使用python3 word2vec_basic2.py来运行
发布于 2016-08-27 10:49:54
如果vocabulary_size太小,大多数单词将被标记为UKN:
unk_count = 0
for word in words:
if word in dictionary:
index = dictionary[word]
else:
index = 0 # dictionary['UNK']
unk_count += 1
data.append(index)
count[0][1] = unk_count因此,没有包含在字典中的即将到来的单词将被同等对待(索引为0)。增加词汇表大小肯定会提高性能。它对Python2或Python3来说确实是垃圾。
为了说明,假设第一批中有128个输入词,但其中120个被标记为未知(具有相同的索引0),并且目标也远远少于128个,会发生什么情况?我们将预测这样的对:来自UKN的UKN和来自UKN的"you“,其中"you”来自" are“,"you”from "?“否则,如果您增加词汇表大小。输入分布样本的大部分信息将会丢失。
https://stackoverflow.com/questions/39123100
复制相似问题