Визначення того, наскільки подібний даний рядок до колекції рядків


10

Я не впевнений, чи належить це питання тут, і я вибачаюся, якщо ні. Те, що я хочу зробити, - це розробити програмний спосіб, за допомогою якого я зможу імовірнісно визначити, чи належить дана струна в мішок рядків. Наприклад, якщо у мене є сумка з 10000 назв міст у США, і тоді у мене є рядок "Філадельфія", я хотів би отримати кількісну міру того, наскільки "Філадельфія" - це назва міста США, засноване на назвах міст США, які я вже знаю. Хоча я знаю, що я не зможу відокремити справжні назви міст від підроблених назв міст у цьому контексті, я, принаймні, сподівався, що такі рядки, як "123.75" та "Швидка руда лисиця, перестрибнувши через ледачих коричневих собак", виключені якийсь поріг.

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


Якщо у вас є позитивні та негативні приклади, ви можете спробувати навчити класифікатора. Для функцій, для початку я б спробував навести кілька простих статистичних даних, таких як, запропоновані Ювалем Філімусом.
Нік

Зверніть увагу на це пов'язане питання .
Рафаель

Назви міст здаються поганим прикладом; вони є всюди, особливо в США. Тут, здається, пошук таблиць є найбільш ефективним способом. Ваша проблема більш загальна?
Рафаель

Відповіді:


5

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

Зважаючи на евристику, ви можете використовувати ймовірність отримати бал, який (сподіваємось) буде більшим для ваших вибіркових даних, ніж для іншого тексту. Для того щоб визначити розумний поріг, можна здійснити перехресну перевірку. Виберіть набір зразкових фраз, які не є назвами міст. Розділіть назви міст на дві частини: велику (скажімо, 80%) частину та невелику (скажімо, 20%) частину. Навчіть свою модель великою частиною (тобто збирайте статистику щодо великої частини), а потім оцінюйте свою модель на малій частині та на вибірці поганих фраз. Визначте, чи є розумний поріг, який проходить більшість назв міст, але лише невелику кількість поганих фраз.


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

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

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