Який алгоритм (и) можна використовувати для досягнення досить хорошого прогнозування наступного слова?


10

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

Я розумію основи нейронних мереж та генетичні алгоритми (хоча ніколи не використовували їх у серйозному проекті), і, можливо, вони могли б допомогти. Цікаво, чи існують якісь алгоритми, за умови відповідного навчального тексту (наприклад, газетних статей та власного набору тексту користувача) можна запропонувати відповідні пропозиції щодо наступного слова. Якщо ні (посилання на) алгоритми, загальні методи високого рівня для атаки на цю проблему вітаються.

Відповіді:


9

Погляньте на n-грами . Один n-грам - це послідовність nслів. У вашому випадку ви хочете nбути 3, оскільки вам потрібно два query wordsі a resulting word. Один 3-грамовий буде, наприклад, "Я втомився", інший - "Я щасливий".

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

Збір подібних даних - найважча частина. Після того, як у вас з’явиться список усіх 3-грамових разом з їх вірогідністю, ви можете відфільтрувати свій список до всіх 3-грам, починаючи з «Я є». Потім ви сортуєте весь цей список за вірогідністю та воалі: ваш прогноз.


Добре, а чи є оптимальне значення, nяке дає хороші результати? Це не завжди повинно бути третім словом, яке передбачається, ви бачите
yati sagade

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

2
Крім того, вам потрібен більший корпус для більших n-грамів, щоб бути практично корисним.
liori

4
гм, це буквально ланцюг Маркова ... не тільки це, але буквально найприкладніший приклад підручника ...
Джастін Л.

2

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

Можливо, ви хочете розглянути / дозволити всі користувацькі введення як одне слово під час навчання, крім вашого словника. Це дозволяє запропонувати наступне слово, але також пропонує автоматично завершити слово чи фрази.

Ось посилання на компіляцію нечітких алгоритмів пошуку рядків

http://ntz-develop.blogspot.com/2011/03/fuzzy-string-search.html


1

Ви шукаєте (статистичну) модель мови .

Модель статистичної мови призначає ймовірність послідовності m слів P(w_1,...,w_m)за допомогою розподілу ймовірностей ...

У розпізнаванні мовлення та стисненні даних така модель намагається зафіксувати властивості мови та передбачити наступне слово у послідовності мовлення ...


Ого. Але я думаю, що відповідь @ sebastiangeiger пояснює це для n = 3.
yati sagade

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