Fasttext - классификация имени цвета - получение '</s>' как model.words - PullRequest
0 голосов
/ 26 октября 2019

В настоящее время я работаю над слоем перевода, чтобы перевести многочисленные уникальные названия цветов в общее имя цвета. Например, METALLIC RED будет RED, а NAVY BLUE будет BLUE. У меня есть список цветов из источника, который я пытаюсь перевести, и базовый набор названий цветов, которые я хотел бы, чтобы они идентифицировались как. В настоящее время используется быстрый текст, когда я создаю модель, контролируемую или не контролируемую. Я получаю 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

1 Ответ

0 голосов
/ 28 октября 2019

Похоже, что вы не используете должным образом fasttext.

a. Прежде всего, мой совет - использовать официальное связывание с python для быстрого текста (pyfasttextбольше не обслуживается).

b. Для вашей цели, я думаю, что вы должны предоставить учебный корпус, сделанный следующим образом ...

__ label__basecolor your_color_expression

(пример: __label__red металлический красный)

... затем обучите контролируемую модель (следуя этому уроку ). Таким образом, классификатор (модель) будет изучать отношения между именами сложных цветов и базовыми цветами.

c. Если ваш тренировочный набор данных небольшой, вы можете начать с FastText предварительно обученные векторы , заставляя классификатор начинать с каких-то ранее существовавших знаний.

Итак, вы можете выполнить следующие шаги:

c.1. Загрузить предварительно обученные векторы (.vec) с fasttext.cc/docs/en/crawl-vectors.html;

c.2. Обучите вашу модель, используя: ./fasttext supervised -input base_colors.txt -output -pretrainedVectors cc.en.300.vec -dim300.

c.3. Теперь ваша модель намного лучше!

...