НЛП - правильно обозначать такие слова, как «нью-йорк» или «хип-хоп» - PullRequest
0 голосов
/ 08 октября 2019

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

Однако я застрял в проблеме. Есть ли способ предварительной обработки текста, говоря python:

`если есть слова, похожие на слова« нью-йорк »,« лос-анджелес »,« хип-хоп », то не разделяйте их, а плавьте: 'new_york', 'los_angeles', 'hip_hop'

?

Я не хочу вручную отображать все из них, и я пытался играть с биграммами и с pos, но снет успеха

Вы можете мне помочь?

1 Ответ

2 голосов
/ 08 октября 2019

Если у вас есть конечный список слов, которые вы хотите «растопить», вы можете использовать str.replace () в тексте:

text = 'new york and applesauce and hip hop'
replacement_dict = {'new york':'new_york', 'hip hop':'hip_hop'}

for k in replacement_dict:
  text = text.replace(k,replacement_dict[k])

print(text)
>>> 'new_york and applesauce and hip_hop'

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

https://www.geeksforgeeks.org/nlp-word-collocations/

https://medium.com/@nicharuch/collocations-identifying-phrases-that-act-like-individual-words-in-nlp-f58a93a2f84a

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...