# Step 2: Build the dictionary and replace rare words with UNK token.
vocabulary_size = 50000
def build_dataset(words, n_words):
"""Process raw inputs into a dataset."""
count = [['UNK', -1]]
count.extend(collections.Counter(words).most_common(n_words - 1))
dictionary = dict()
for word, _ in count:
dictionary[word] = len(dictionary)
data = list()
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
reversed_dictionary = dict(zip(dictionary.values(), dictionary.keys()))
return data, count, dictionary, reversed_dictionary
data, count, dictionary, reverse_dictionary = build_dataset(vocabulary,
vocabulary_size)
我正在学习使用Tensorflow进行单词向量表示的基本示例。
第2步的标题为“构建词典并用UNK token 替换稀有单词”,但是,对于“UNK”所指的内容,没有预先定义的过程。
要指定问题:
0)UNK在NLP中通常指的是什么?
1)count = [['UNK',-1]]是什么意思?我知道方括号[]是python中的列表,但是,为什么我们将它与-1并置呢?
最佳答案
正如注释中已经提到的那样,在 token 化和NLP中,当您看到UNK
token 时,它表示未知单词的机会很高。
例如,如果您想预测句子中缺少的单词。您将如何向其中提供数据?您肯定需要一个 token 来显示丢失的单词在哪里。因此,如果“房屋”是我们遗漏的词,则在标记化之后将类似于:
PS:count = [['UNK', -1]]
用于初始化count
,就像Ivan Aksamentov已经说过的[['word', number_of_occurences]]
一样。
关于tensorflow - 单词的向量表示中的UNK token 是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45735357/