我正在尝试使用以下代码创建快文本词嵌入。
import fasttext
from os import path
txt_path = path.join("/home/ccse/FastText_embeddings", "train.txt")
model = fasttext.train_unsupervised(txt_path, model='cbow')
此处 train.txt 仅包含一行-“祝您有美好的一天”。
运行代码后,出现以下错误:
Read 0M words
Number of words: 0
Number of labels: 0
Traceback (most recent call last):
File "ft_embedding.py", line 4, in <module>
model = fasttext.train_unsupervised(txt, model='cbow')
File "/home/ccse/.local/lib/python3.6/site-packages/fasttext/FastText.py", line 455, in train_unsupervised
fasttext.train(ft.f, a)
ValueError: Empty vocabulary. Try a smaller -minCount value.
我不了解其原因以及解决方法。
其他信息: 我在跑步- Ubuntu 18.04, Python 3.6.8, 快速文本0.9.1
答案 0 :(得分:0)
我找到了解决方案。我犯了一个愚蠢的错误。万一有人犯了和我一样的愚蠢错误,就把解决方案留在这里。
minCount的默认值设置为5。由于我的训练文件仅包含1行,每个单词仅出现一次,所以我遇到了该错误。 要修复它,我只需要更改参数值即可。
model = fasttext.train_unsupervised(txt_path, model='cbow', minCount = 1)
在现实生活中创建嵌入(不是为了测试功能)时,我们将使用大型语料库。在那种情况下,我们不应该面对这个问题。