Это пятый (и последний) пост в моей серии Последовательность маркировки в Python Найдите предыдущий здесь: CRF для мешки последовательности . Получить код для этой серии на Гадость .
Что хороша наша система, если мы не можем использовать его, чтобы предсказать этикетки новых предложений. До этого, однако, мы должны позаботиться о том, чтобы настроить полный трубопровод, чтобы пойти от нового предложения, как показано на сайте VueUSax, чтобы иметь полностью помеченное предложение на наших сценариях Python.
Идея состоит в том, чтобы заимствовать функции из всех других предыдущих постов; Эти функции были реплицированы где-то внутри vuelax
Пакеты и импортируются, чтобы сделать их менее грязными для работы.
У нас новое предложение!
Представьте себе получение нового предложения, которое выглядит так:
¡Sin Pasar Ee.uu! 🇪🇬 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡🇪🇬 a mécial a el cairo, egipto $ 13 677!
Если ваш испанский не в точке, я переводю это для вас:
Без остановок в США! 🇪🇬 Любой аэропорт в Мехико в Каир, Египет 13 677 долларов!
offer_text = "¡Sin pasar EE.UU! 🇪🇬¡Todo México a El Cairo, Egipto $13,677!"
Шаги:
Tokenise : Первый шаг должен был токеризировать его, используя ваш Индекс emoji tokenize
функция
from vuelax.tokenisation import index_emoji_tokenize tokens, positions = index_emoji_tokenize(offer_text) print(tokens)
Погибги : Следующее в строке состоит в том, чтобы получить теги POS, соответствующие каждому из токенов. Мы можем сделать это, используя Стэнфордпостуггггггггггггггггггггггггерс
:
from nltk.tag.stanford import StanfordPOSTagger spanish_postagger = StanfordPOSTagger('stanford-models/spanish.tagger', 'stanford-models/stanford-postagger.jar') _, pos_tags = zip(*spanish_postagger.tag(tokens)) print(pos_tags)
Подготовьтесь к CRF : Этот шаг включает в себя добавление дополнительных функций и подготовки данных, которые должны потребляться пакетом CRF. Все необходимые методы существуют в vueuex.feature_selection.
from vuelax.feature_selection import featurise_token features = featurize_sentence(tokens, positions, pos_tags) print(features[0])
Последовательность маркировки с pycrfsuite : И последний шаг – загрузить нашу обученную модель и тег нашей последовательностью:
import pycrfsuite crf_tagger = pycrfsuite.Tagger() crf_tagger.open('model/vuelax-bad.crfsuite') assigned_tags = crf_tagger.tag(features) for assigned_tag, token in zip(assigned_tags, tokens): print(f"{assigned_tag} - {token}")
И результат:
n - ¡ n - Sin n - pasar n - EE.UU n - ! n - ¡ o - Todo o - México s - a d - El d - Cairo d - , d - Egipto n - $ p - 13,677 n - !
По визуальной проверке мы можем подтвердить, что теги верны: «Todo México» – это происхождение (O), «El Cairo, EgiPto» – это пункт назначения, а «13 677» – это цена (P).
И это так. Это конец этой серии постов о том, как делать последовательность маркировки с Python. Я надеюсь, что вы смогли следовать, а если нет, я надеюсь, у вас есть несколько вопросов для меня. Помните, опубликуйте их здесь или спросите меня через Twitter @io_Exception Отказ
Что еще есть делать?
Есть много способов, которыми этот проект может быть улучшен, несколько приходят на ум:
- Улучшить размер/качество набора данных путем маркировки больше примеров
- Улучшить то, как происходит маркировка, используя одну электронную таблицу вообще не масштабируется
- Интегрируйте все под одним переработким трубопроводом
- «Производитель» код, выйти за рамки эксперимента.
Оригинал: “https://dev.to/fferegrino/putting-everything-together-sequence-labelling-in-python-part-5-19ng”