Умение работать с текстовыми данными - это то, что я смог отточить за последние пару месяцев. Учитывая огромное количество неструктурированных данных, которые генерируются каждый день в связи с ростом использования платформ социальных сетей, форумов, сайтов с обзорами и веб-страниц, это умение, которым должен обладать каждый специалист по данным.

Вы обнаружите, что большинство компаний владеют тоннами текстовых данных, которые были сканированы из Интернета, извлечены с сайтов социальных сетей, форумов и т. Д., В зависимости от цели компании. Эти данные обычно довольно беспорядочные, но они содержат много информации, которая может помочь компаниям получить информацию, которая может быть использована для развития их бизнеса. Здесь на помощь приходят Обработка естественного языка и разработка функций.

Обработка естественного языка или, вкратце, НЛП - это область исследования, в которой основное внимание уделяется взаимодействию человеческого языка и компьютеров. Он состоит из процессов, которые используются для эффективного анализа, понимания и извлечения полезной информации из текстовых данных.

Разработка функций - это процесс извлечения полезной информации / функций из необработанных данных. В данном случае текстовые данные.

В этом посте будет освещен метод, который можно использовать для извлечения функций из текста. Это: Распознавание именованных сущностей с использованием языка программирования R.

Признание именованных сущностей

Сущности определяются как наиболее важные части предложения. Распознавание именованных сущностей - это процесс обнаружения этих сущностей, которые включают местоположение места, человека, организации и т. Д. Из строки текста.

Пример:

Предложение - «Меня зовут Кэтрин Гитау, я работаю в Ongair Limited в Найроби, Кения».

Именованные организации - («Человек»: «Катрин Гитау»), («Организация»: «Ongair Limited»), («Местоположение»: «Найроби, Кения»)

Типичная модель NER в основном проходит через следующий процесс:

1. Токенизация

Это разбиение текстов на блоки со смыслом, известные как жетоны. В этом случае предложение разбивается на слова. Если бы у нас был абзац, мы могли бы разбить его как на предложения, так и на слова. Это делается с помощью аннотаторов слов. Аннотаторы создаются функциями, которые отмечают места в строке, где слова и предложения начинаются и заканчиваются.

#create annotators for words and sentences
word_ann <- Maxent_Word_Token_Annotator()
sent_ann <- Maxent_Sent_Token_Annotator()

2. Выявление и извлечение словосочетаний-существительных

Это касается извлечения словосочетаний из текста (сущностей). Среди различных типов аннотаторов, предоставляемых пакетом OpenNLP, есть аннотатор сущностей, который извлекает различные существительные / имена из документа. OpenNLP может находить различные сущности, такие как время, местоположение, организации, людей, проценты и т. Д.

Эти функции аннотатора создаются так же, как аннотаторы слов и предложений:

#creates annotators of kind person, location and organization
person_ann <- Maxent_Entity_Annotator(kind = "person")
location_ann <- Maxent_Entity_Annotator(kind = "location")
organization_ann <- Maxent_Entity_Annotator(kind = "organization")

Это просто обзор того, как выполняется распознавание именованных сущностей. Остальную часть кода вы можете получить здесь.

Помимо NER, есть другие различные функции, которые можно извлечь из текста, например:

i) Части речи. Каждое слово в предложении связано с частью речевого тега, например глаголами, существительными, местоимениями, наречиями и т. д. Это определяет использование слова в предложении.

i i) N-граммы - это сочетание (N) слов вместе. Это более информативный подход, чем использование Unigrams. Мне больше знакомы Биграммы, которые представляют собой сочетание двух слов в корпусе. Вот код, как извлечь биграммы из предложения. Они могут пригодиться для распознавания речи, определения языка и многого другого.

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

Чтобы узнать больше о НЛП и других функциях, вы можете воспользоваться следующими ссылками:

Analytics Vidhya, полное руководство по пониманию и внедрению кодов обработки естественного языка в Python - https://www.analyticsvidhya.com/blog/2017/01/ultimate-guide-to-understand-implement-natural-language- обработка-коды-в-python /

RPubs, обработка естественного языка - https://rpubs.com/lmullen/nlp-chapter

Проект Future Mini: Узнайте, в каких районах Найроби, Кения, часто происходят аварии. Вы можете извлечь данные из платформ социальных сетей, затем выполнить тегирование PoS для определения таких слов, как «аварии», «столкновение» и т. Д., А затем выполнить NER для извлечения упомянутых местоположений. После этого вы можете получить частоту упомянутых локаций. Это проект, который продолжается, но от него сильно болит голова. Было бы здорово, если бы некоторые люди попробовали это, а затем сравнили результаты. Пингуйте меня, если вам это удастся :)

До следующего раза :)