Розбір мови, щоб знайти важливі слова


9

Я шукаю певний вклад та теорію щодо підходу до лексичної теми.

Скажімо, у мене є колекція рядків, яка може бути просто одним реченням або потенційно декількома реченнями. Я хотів би проаналізувати ці рядки та вирвати найважливіші слова, можливо, із оцінкою, яка позначає, наскільки ймовірно, що слово має значення.

Давайте розглянемо кілька прикладів того, що я маю на увазі.

Приклад №1:

"Я дуже хочу Кеуріга, але не можу собі дозволити!"

Це дуже базовий приклад, лише одне речення. Як людина, я легко бачу, що «Кеуріг» - це найважливіше слово тут. Також "дозволити собі" є відносно важливим, хоча це, очевидно, не основний пункт речення. Слово "Я" з'являється двічі, але це зовсім не важливо, оскільки воно насправді не повідомляє нам жодної інформації. Я можу очікувати, що я побачу хеш слова / балів приблизно так:

"Keurig" => 0.9
"afford" => 0.4
"want"   => 0.2
"really" => 0.1
etc...

Приклад №2:

"Просто в мене була одна з найкращих практик плавання в моєму житті. Сподіваюся, я можу підтримувати свої часи, коли змагання. Якби я згадав взяти свій непромокальний годинник".

У цьому прикладі є декілька речень, тому в усьому буде більше важливих слів. Не повторюючи точку вправи з прикладу №1, я, мабуть, очікував, що з цього вийдуть два-три дійсно важливих слова: "плавання" (або "плавальна практика"), "змагання" та "дивитися" (або "водонепроникний" годинник "або" не водонепроникний годинник "залежно від способу обробки дефісу).

З огляду на кілька таких прикладів, як би ви зробили щось подібне? Чи існують бібліотеки чи алгоритми з програмою з відкритим кодом, які вже роблять це?


Також це моя перша публікація на programmers.stackexchange.com. Вибачте, якщо це неправильне місце і належить на StackOverflow або іншому веб-сайті SE. Раді перенести питання, якщо потрібно.
Метт Хаггінс

Я не розумію з питання, що ви намагаєтеся досягти. Зокрема, для першого прикладу слова "Кеуріг" та "дозволити собі" можна було б визначити за допомогою простої статистичної перевірки: серед слів речення ці два слова рідше зустрічаються в англійській мові, ніж інші. Тож якби у вас була база даних частотних слів, ви могли б легко визначити ці слова.
Qwertie

Відповіді:


5

Однозначно люди думають про описану вами проблему. Класифікація та вилучення відповідних одиночних слів у тексті (pdf) Жоан Вентура та Хоакіма Феррейра да Сілви - це приємне вступ до існуючих методів ранжирування, а також пропозиції щодо вдосконалення. Усі методи, які вони описують, покладаються на корпус (багато тексту) проти одного або двох рядків тексту. У вашому корпусі має бути збірка всіх зразків або, можливо, багато корпусів зібраних зразків із конкретних джерел. Майте на увазі, що відповідність одного слова (unigram) - це дуже невирішена проблема. Як описано у статті:

"... використовуючи чисто статистичні методи, такий вид класифікації не завжди є простим або навіть точним, оскільки, хоча поняття релевантності є поняттям, зрозумілим легко, зазвичай немає єдиної думки щодо межі, яка відокремлює релевантність від нерелевантності. Наприклад, такі слова, як "Республіка" або "Лондон", мають значущу відповідність, а слова типу "чи" і "оскільки" взагалі не мають значення, але як щодо слів "читати", "закінчувати" і "далі"? слів є проблематичними, оскільки зазвичай немає єдиної думки щодо їх смислового значення ".

Існує багато наборів інструментів для обробки природних мов з відкритим кодом . (Будьте уважні. Деякі інструменти безкоштовні для досліджень, але для комерційного використання потрібна комерційна ліцензія.) Вони полегшать ваше життя незалежно від обраного вами підходу.

Мені найбільше знайомий інструментарій з природних мов (NLTK) . Він простий у використанні, добре задокументований і міститься в книзі « Обробка природних мов з Python» (у вільному доступі в Інтернеті). Як простий приклад того, що NLTK може зробити для вас, уявіть, як використовувати його теггер «Частина мови» . Ідентифікуючи частину мови кожного слова, ви можете вважати власні іменники дуже важливими, а прикметники - не так. Дієслова можуть бути важливими, а прислівники - не так. Це аж ніяк не найсучасніший рейтинг, але корисну інформацію ви отримуєте з невеликими зусиллями. Коли ви будете готові перейти до більш досконалого аналізу, вбудована здатність NLTK до токенізації, тегування, розміщення та класифікації дозволить вам зосередитись на інших деталях вашого рішення.


1

Обробка природних мов є власною дисципліною, на якій зроблено досить багато формальних досліджень. Я б почав, заглянувши туди.

Я також переглянув би свої потреби. Навіть після 50+ років досліджень, найкращі комп'ютерні вчені змогли придумати, це Siri. Я б не очікував, що комп'ютер буде регулярно робити те, про що ви говорите.

Якщо в мовленні є певні обмеження (наприклад, Сірі припускає, що у вас є проста команда чи запитання), це може бути краще. Перегляд моїх потреб (припускаючи, що мені потрібен НЛП) включав би визначення моїх обмежень. Після цього я, швидше за все, полюватиму за цілою кількістю прикладів. Частково перевірити все, що я придумав, але багато сучасних рішень передбачають машинне навчання. Мені потрібні ці приклади як вхід до кривої навчання.

Отже, підсумовуючи, я серйозно сумніваюся, що все-таки зможе дати вам хороші оцінки в такому сценарії без контексту.


+1 для Siri dig ... або просування по службі ...
Аарон Маківер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.