Текстовые данные часто неструктурированы. Data Scientist или ML Eng. должны извлекать информацию, потому что эти данные не являются числовыми. В НЛП есть много методов, таких как Bag-of-Words, TF-IDF, Word2Vec, BERT и так далее. Тегирование части речи (POS) является одним из них. По данным НЛП-прогресс, современная модель достигла точности более 90%. Нечего сказать, эта область является зрелой и высокоразвитой. Если у вас много наборов данных POS, легко создать высокопроизводительную модель машинного обучения.

Я обычно использую эту разработку функций. Например, NLTK и spaCy. Используя эти теги, мы можем получить синтаксические и грамматические особенности предложений. Подсчет POS-тегов, так называемый Bag-of-POS, — очень простой и эффективный способ в задачах НЛП, особенно для небольшого набора данных. Однако у меня нет информации о том, какие библиотеки лучше. Если у меня будет какая-то стратегия выбора библиотеки, эффективность разработки повысится.

Резюме

Наконец, я нашел следующие вещи,

  • Стэнфордский НЛП получил лучшую производительность (f1 микро = 92%)
  • spaCy и Google Cloud Language не возвращают некоторые теги (AUX, PROPN, SCONJ и SYM)
  • Сопоставляя отсутствующие теги с существующими, Google может получить почти такой же балл, как и Стэнфордский НЛП (PROPN -> NOUN, AUX -> VERB, [CCONJ, SCONJ] -> CONJ).

Как я экспериментировал?

Набор данных

Набор данных CoNLL 2017 Shared Task (только тестовые данные)

Процедура

  1. Скачать набор данных с сайта
  2. Загрузить набор данных в Jupyter Notebook
  3. Введите текст в функции или API, затем сохраните ответ
  4. Вычислите микро f1 по предсказанию и истине

Библиотеки и API

Я использовал f1 micro, чтобы мы понимали, какая модель работает лучше в глобальном масштабе. Блокнот находится на GitHub.



ЭДА

Во-первых, я проверил частоту.

Как вы знаете, «СУЩЕСТВИТЕЛЬНОЕ» является наиболее частым тегом, потому что предложения часто строятся с помощью «Подлежащего» и «Глагола», а Подлежащее почти равно «СУЩЕСТВЕННОМУ». «ПУНКТ» означает пунктуацию. Когда мы пишем предложение, знаки препинания используются хотя бы один раз. Приблизительно количество знаков препинания равно или превышает количество предложений в наборе данных. (PUNCT ≥ Количество предложений)

В соответствии с универсальными POS-тегами теги означают

Затем вычислите вероятности для каждого тега и кумулятивного.

На основе ABC-анализа мы можем разделить почтовые теги на три кластера.

  • A: СУЩЕСТВИТЕЛЬНОЕ, ПУНКТ, ГЛАГОЛ, PRON, PROPN, ADP, DET
  • B: ADJ, AUX, ADV
  • C: CCONJ, ЧАСТЬ, ЧИСЛО, SCONJ, X, INTJ, SYM

Мы можем составить предложение только из кластера А. Например, «Я пью кофе в Starbucks». Кластер А является ядром предложения.

Кластер B является декоратором. Используя ADJ, AUX и ADV, мы можем выразить свои чувства и намерения. Например, когда мой друг звонит мне, чтобы пригласить на домашнюю вечеринку, я говорю: «Вообще-то я пью кофе в Starbucks. Хотел бы я могу пойти туда».

Кластер C — это соединитель или крошечная информация. Это функциональные. В задачах НЛП разработчики часто маскируют эти слова под что-то. Например, заменить все числа на ноль. 1200 иен -> 0000 иен.

Оценка

Дайте начать оценку.

f1 микро счет

NLTK/базовый уровень

СПАСИ

Стэнфордский НЛП

Google

Вывод

  • Стэнфордский НЛП получил лучшую производительность (f1 микро = 92%)
  • spaCy и Google Cloud Language не возвращают некоторые теги (AUX, PROPN, SCONJ и SYM)

Приложение

  • Сопоставляя отсутствующие теги с существующими, Google может получить почти такой же балл, как и Стэнфордский НЛП (PROPN -> NOUN, AUX -> VERB, [CCONJ, SCONJ] -> CONJ).