无法从Fasttext中的文本文件训练。获取ValueError:空词汇

时间:2019-11-24 05:19:30

标签: python-3.x word-embedding fasttext

我正在尝试使用以下代码创建快文本词嵌入

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

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我犯了一个愚蠢的错误。万一有人犯了和我一样的愚蠢错误,就把解决方案留在这里。

minCount的默认值设置为5。由于我的训练文件仅包含1行,每个单词仅出现一次,所以我遇到了该错误。 要修复它,我只需要更改参数值即可。

model = fasttext.train_unsupervised(txt_path, model='cbow', minCount = 1)

在现实生活中创建嵌入(不是为了测试功能)时,我们将使用大型语料库。在那种情况下,我们不应该面对这个问题。