Fasttext - 颜色名称分类 - 获取'</s>'作为model.words

Fasttext - Color Name Classification - Getting '</s>' as model.words

我目前正在开发一个翻译层,将许多独特的颜色名称翻译成一个通用的颜色名称。例如,METALLIC RED 将是 RED,而 NAVY BLUE 将是 BLUE。我有一个来自我试图翻译的来源的颜色列表和一组我希望将它们标识为的颜色名称。目前 fasttext 在构建模型时,监督或非监督我得到 model.words 作为 [''] 无论我是否标记线条。我试图删除单词中的所有特殊字符等。我正在使用 fasttext 库和

我已尝试将我的数据集转换为包含来自我的数据框的标签:

__label__beige beige
__label__black black
__label__blue blue
__label__brown blue
__label__gold gold
__label__gray gray
__label__green green
__label__orange orange
__label__purple purple
__label__red red
__label__silver silver
__label__white white
__label__yellow yellow
__label__other other

我也试过删除标签。


import joblib
import fasttext
import numpy as np
from pyfasttext import FastText
from tensorflow.keras.preprocessing.text import Tokenizer

model = fasttext.train_unsupervised('base_colors.txt')

显示我列出的所有基色。

我希望 运行 model.words 我会得到:

米色 黑色的 蓝色的 棕色的 金子 灰色的 绿色 橘子 紫色的 红色的 银 白色的 黄色的 其他

相反,我得到:

['</s>']

我正在尝试翻译的数据集示例:

ultra silv met
sunrise orange
polo grn met
red jewel tint
charcaol
cream ivory
lt driftwd met
blue mist
silvermist
charoal
3gcpkte77dg146719
blue granilte met
steele green
cosmic silv
whitwe diamond
blue granit

解决方案。使用预训练向量以及带有多种颜色标记的输入。

./fasttext supervised -input base_colors.txt -output model -pretrainedVectors cc.en.300.vec -dim 300

看来您没有正确使用 fasttext。

a.首先,我的建议是使用official fasttext python binding(不再维护pyfasttext)。

b.为了您的目的,我认为您必须提供一个训练语料库,按以下方式制作...

__label__basecolor your_color_expression

(example: __label__red metallic red)

...然后训练监督模型(遵循 this tutorial)。因此分类器(模型)将学习复杂颜色名称和基色之间的关系。

c.如果你的训练数据集很小,可以从FastText pretrained vectors开始,让分类器从一些开始已有知识。

所以,您可以按照以下步骤操作:

c.1. 从 fasttext.cc/docs/en/crawl-vectors.html 下载预训练向量 (.vec) ;

c.2. 使用以下方法训练模型:./fasttext supervised -input base_colors.txt -output model -pretrainedVectors cc.en.300.vec-暗淡 300。

c.3. 现在你的模型好多了!