Як я можу витягнути слова із речення та визначити, яка частина мови є кожним? [зачинено]


19

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

Наприклад

Здрастуйте, Світ, я вирок

поверне це

verb noun, pronoun verb adjective noun

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

Отже, моє запитання: чи хтось чув щось подібне?


2
"Привіт" - це дієслово? Я маю на увазі, я не знаю, що б це було, але це не схоже на дієслово.
Ден Рей

@DanRay: Можливо, це питання для english.stackexchange.com?
Стриптинг-воїн

1
@DanRay ха-ха, бачиш? Ось чому я намагаюся розібратися, чи може щось це зробити, бо, мабуть, я страшенна граматикою.
Вінні

@Vinny - Звичайно, можливо. Проблема полягає в тому, що це - наступна ідея на трильйон доларів, і наразі її все ще не було зроблено в продукт.
Рамхаунд

1
@Vinny Так, хтось чув про щось подібне.
Тулен Кордова

Відповіді:


18

Це називається Обробка природних мов, і це величезне, складне поле. Щось, як ви описуєте, - це монументальне досягнення, і навіть найкращі рішення, як-от Уотсон , ніде не є ідеальним.

Такі речі роблять його складним: "Буйвол Буффало Буффало Буйвол Буйвол Буйвол Буйвол буйвол"

граматично правильне речення в американській англійській мові, яке використовується як приклад того, як омоніми та омофони можуть бути використані для створення складних мовних конструкцій. Він обговорюється в літературі з 1972 року ... Він також був представлений у книзі Стівена Пінкера 1994 р . Мовний інстинкт як приклад вироку, який є "начебто безглуздим", але граматичним ...

Сенс речення стає зрозумілішим, коли розуміється, що він використовує місто Буффало, Нью-Йорк та дещо незвичайне дієслово "на буйволів" (що означає "знущатися чи залякати"), і коли розділові знаки та граматика розширюються так, що речення звучить так: «Буйвол буйволів, що буйволів буйволів буйволів, буйволів буйволів буйволів». Значення стає ще зрозумілішим, коли вживаються синоніми: "Бізон бізон, що інші хулігани зубрів Буффало, самі хулігани бізони".


1
Це те, що я шукаю! Хтось чув про те, щоб хтось адаптував це у меншому масштабі? Відкрите джерело? Приклади цього використання в менших масштабах?
Вінні

@Vinny AFAIK нічого не доступного у відкритому коді, оскільки вирішення цих питань дуже вигідно компаніям, як виявлення граматики MS Word. Існує кілька програм бот-бот, які доступні, я вважаю.
Рятал

1
@Vinny Це складність не має нічого спільного з масштабом. Обробка природних мов має властиву складність, яка не зменшується при зменшенні "масштабу".
Тулен Кордова

6

Хоча розділити речення та визначити граматичну правильність разом із вирішенням своєї першої проблеми простіше, ніж ваша друга проблема, багато складностей, таких як дієслова-дієслова та дієслова, як плавання, програмування тощо, та інші подібні тонкощі, це все ще є проблемою - Див. Моронів відповідь.

Але ваша друга проблема - люди скидали величезних зусиль , щоб знайти ідеальне рішення, але на самому справі досконалий алгоритм «інтерпретації" не реалізуємо практично для будь-якого природної мови , як англійська - є зміни , які будуть задерти алгоритм. Це поле - гібрид між AI, інформатикою та лінгвістикою, відомий як NLP . Врахуйте це: Навіть Google Translate не є ідеальним при "інтерпретації" речень.

Але все-таки це дуже цікаве поле.


@StriplingWarrior Я просто хотів достатньо контрастувати між двома проблемами, поставленими ОП. Помічено. Редагуйте на своєму шляху
yati sagade

4

Я думаю, ви повинні почати читати цю статтю у Вікіпедії:

http://en.wikipedia.org/wiki/Part-of-speech_tagging

(це науково-дослідна сфера, не сподівайтеся на таке легке рішення.)


2
ІТ слід додати, що хоча NLP є величезним, важким і, ймовірно, нерозв'язним на сучасних комп’ютерах, позначення POS - це найпростіша його частина, і якщо достатній розмір корпусу чи велика відданість і ручне написання правил, це можна вирішити майже ідеально, безумовно, вище 99% правильності. Цього цілком може бути достатньо для ваших потреб.
Кіліан Фот

дякую, саме це я шукав.
Amc_rtty

насправді виходячи з опису ОП, це має бути прийнятою відповіддю, оскільки ви правильно дотримуєтесь @KilianFoth
Amc_rtty

-1

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

Потрібно два поля в таблиці: wordіusage

Перетворіть фразу в масив рядків (кожне слово є рядком) і незалежно:

select 'usage' from Dictionary WHERE 'word' = $word; 

Це важке рішення, але таке, яке я використовував у минулому.


5
Це передбачає, що кожне слово має лише один можливий POS, і я запевняю, що це зовсім не так.
мікротерйон

Погоджено - немає жодного способу, щоб це можливо працювало (принаймні англійською мовою) зі всіма словами, які можуть виступати як іменники, дієслова тощо, залежно від контексту.
Дерек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.