Size: a a a

Natural Language Processing

2020 January 21

A

Alexander in Natural Language Processing
Всем привет! Такой вопрос. Есть у меня тексты (разговор абонента с оператором, без пунктуации, на английском) и в этих текстах в ручную выделены фразы нескольких категорий обещаний которые дал оператор абоненту (перезвонить назад, назначить встречу и т.д.). В целом 12 категорий. Сейчас я думаю над созданием алгоритма для этого. Выделил для себя два шага.
1) На первом шаге надо научить алгоритм находить конец и начало всех обещаний. То есть чтобы вставлялся тег начала и тег конца.
2) Второй шаг состоит в созданий классификатора, который бы распихивал обещания по нужным категориям.

Второй шаг, как я понимаю, хорошо разработан и это называется text classification. Сейчас смотрю как люди это делают. А вот по теме первого шага я чего-то не смог найти никаких разработок. Не подскажите в какую сторону копать? Может существуют подходы которые решают два шага одновременно?
источник

D(

David (ddale) Dale in Natural Language Processing
Alexander
Всем привет! Такой вопрос. Есть у меня тексты (разговор абонента с оператором, без пунктуации, на английском) и в этих текстах в ручную выделены фразы нескольких категорий обещаний которые дал оператор абоненту (перезвонить назад, назначить встречу и т.д.). В целом 12 категорий. Сейчас я думаю над созданием алгоритма для этого. Выделил для себя два шага.
1) На первом шаге надо научить алгоритм находить конец и начало всех обещаний. То есть чтобы вставлялся тег начала и тег конца.
2) Второй шаг состоит в созданий классификатора, который бы распихивал обещания по нужным категориям.

Второй шаг, как я понимаю, хорошо разработан и это называется text classification. Сейчас смотрю как люди это делают. А вот по теме первого шага я чего-то не смог найти никаких разработок. Не подскажите в какую сторону копать? Может существуют подходы которые решают два шага одновременно?
Ты можешь разбить все тексты на какие-нибудь кусочки (например, токены, или скажем сразу фразы), и для них теггером (например, BiLSTM'кой) предсказывать IOB-разметку. Как для NER.

То есть на вход модели подаётся последовательность токенов, а на выходе последовательность тегов типа O, O, O, O, B-callback, I-callback, I-callback, O, O
источник

YB

Yuri Baburov in Natural Language Processing
David (ddale) Dale
Я хз.
Не будь этого "me", можно было бы склеить "let down" в один токен.
А если между частями устойчивого выражения может быть что угодно, то я вообще не уверен, что подход со словными эмбеддингами применим.
Возможно, можно залезть в атеншны BERT'а, заметить, что let и down сильно смотрят друг на друга, и на этом основании их "склеить" в какую-то цельную конструкцию. Но я сам так не делал и хорошего чужого опыта тоже не знаю.
строим синтаксическое дерево, оттуда выделяем последовательности слов, которые, скажем, есть в словаре английских выражений.
альтернатива — считать вектора для n-грамм и смотреть, что вектор let_down сильно отличается от среднего из вектора для let и вектора для down. тогда значит это какое-то выражение.
источник

S🇷

Spacehug 🇷🇺 in Natural Language Processing
Приветствую. Где всему тому, что вы знаете, учиться?
источник

YB

Yuri Baburov in Natural Language Processing
Spacehug 🇷🇺
Приветствую. Где всему тому, что вы знаете, учиться?
онлайн-курсы, чтение научных работ, книжки, работа по специальности.
источник

S🇷

Spacehug 🇷🇺 in Natural Language Processing
Yuri Baburov
онлайн-курсы, чтение научных работ, книжки, работа по специальности.
Если есть цель вытащить актуальную информацию, первое и третье поможет?
источник

S🇷

Spacehug 🇷🇺 in Natural Language Processing
Или это только чтобы научиться?
источник

YB

Yuri Baburov in Natural Language Processing
Spacehug 🇷🇺
Если есть цель вытащить актуальную информацию, первое и третье поможет?
да. смотря какие, конечно, но курсы многие актуальны, и книжки некоторые до сих пор актуальны.
источник

YB

Yuri Baburov in Natural Language Processing
Spacehug 🇷🇺
Или это только чтобы научиться?
вообще, работа инженера — декомпозировать задачу и выбирать в 99% из доступных альтернатив (или делать свою альтернативу, если ничего не подходит).
источник

YB

Yuri Baburov in Natural Language Processing
поэтому если учиться, то инженерные навыки тоже нужно приобретать. а с ними можно уже лучше разбираться в источниках информации.
источник

S🇷

Spacehug 🇷🇺 in Natural Language Processing
Спасибо. Если вдруг потребовалось бы перечислить топ 10 инженерных навыков - какие бы обозначили как самые важные?
источник

YB

Yuri Baburov in Natural Language Processing
Spacehug 🇷🇺
Спасибо. Если вдруг потребовалось бы перечислить топ 10 инженерных навыков - какие бы обозначили как самые важные?
слишком сложный вопрос в такой постановке. могу рекомендовать лишь загуглить.
источник

YB

Yuri Baburov in Natural Language Processing
первый же ответ гугла вполне себе норм: https://medcollege5.ru/rabota-i-zarplata/professionalnye-navyki-inzhenera.html
нужно лишь немного ещё учесть специфику IT-инженеров
источник

YB

Yuri Baburov in Natural Language Processing
и вот ещё неплохой ответ про IT-специфику:
https://habr.com/ru/post/483218/
источник
2020 January 22

L

Lenich in Natural Language Processing
Всем привет. Я в python и в яп совсем новичёк, сел изучать yargy, потому что интересно и хочется сделать для себя один проект.
Работаю в Visual Studio Code 1.41.1 и питоне 3.8.1
Немного вопросов:
1) Каким образом можно удобно вытащить элементы из найденных токенов?
[MorphToken('молока', [11, 17), 'RU', [Form('молоко', Grams(NOUN,Sgtm,gent,inan,neut,sing))
я смог только вытащить value
for token in tokenized:
token.value
как обратиться к остальным?

2) Что за запись такая: [11, 17)
почему открывающая скобка квадратная, а закрывающая круглая?

3) есть ли какой-нибудь вариант печатать «спаны» цветом прямо в консоли VSC?
смотрю сейчас выступление Александра Кукушкина где используется ipymarkup и jupyter notebook.
а можно как-нибудь в консоли это делать?

Заранее извиняюсь за нубские вопросы :)
источник

М

Михаил in Natural Language Processing
2 - это не синтаксис Python, это просто текстовое представление объекта span. Правая круглая скобка символизирует то что элемент с индексом 17 не входит в диапазон.
источник

М

Михаил in Natural Language Processing
1 - можно вывести dir от token и посмотреть поля. Можно посмотреть доступные поля в исходниках библиотеки.
источник

М

Михаил in Natural Language Processing
3 - консоль vscode не поддерживает изменение цвета, насколько я знаю. Вроде бы в библиотеке была возможность выделения спанов в тексте квадратными скобками.
источник

RI

Roman Iudichev in Natural Language Processing
Михаил
2 - это не синтаксис Python, это просто текстовое представление объекта span. Правая круглая скобка символизирует то что элемент с индексом 17 не входит в диапазон.
Математическая нотация.
источник

L

Lenich in Natural Language Processing
Михаил
3 - консоль vscode не поддерживает изменение цвета, насколько я знаю. Вроде бы в библиотеке была возможность выделения спанов в тексте квадратными скобками.
кстати, поддерживает, нашёл изменение цветов вот так:

import colorama
from colorama import Fore, Style
print(f"{Fore.GREEN} Hello World {Style.RESET_ALL}")


и цветной JSON ещё нашёл:

import json
from pygments import highlight, lexers, formatters
formatted_json = json.dumps(json.loads(json_data), indent=4)
colorful_json = highlight(formatted_json, lexers.JsonLexer(), formatters.TerminalFormatter())


*когда сам ответил на свой вопрос*
источник