Обработка естественного языка - Идеи для [закрытых] проектов новичка

14
задан skaffman 4 April 2010 в 14:38
поделиться

2 ответа

Большинство проектов для «новичков» нацелены на повторную реализацию хорошо известных алгоритмов, чтобы новичок мог учиться, сравнивая свои результаты с известными решениями. Для этого я бы порекомендовал что-нибудь простое, например, фильтр спама в электронной почте. Вы должны начать с создания обучающего файла, то есть скопировать текст нескольких реальных писем в файл CSV и вручную пометить их как спам или не спам, например:

text|is_spam
hi bob! how are you?|0
what time are you coming over|0
how to buy viagra now!|1

Затем вы создадите тест в том же формате, что и обучающий файл, но, очевидно, с другими примерами.

Затем вы должны создать свой классификатор / фильтр спама. Есть много разных способов реализовать спам-фильтр, но самый простой - просто подсчитать частоту появления слова с is_spam = 0 и is_spam = 1. Например, на основе тренировочного файла, приведенного выше, слово «виагра» связано с 1 классификацией спама, но с 0 классификациями, не относящимися к спаму, поэтому вполне вероятно, что будущие электронные письма, содержащие слово «виагра», также будут классифицироваться как спам. Точно так же слово «как» встречается в 1 спаме и 1 электронном письме, не относящемся к спаму, поэтому оно с меньшей вероятностью указывает на окончательную классификацию.

Затем вы обучите свой классификатор на тренировочном файле и вычислите его точность, запустив его на тестовом файле.

Если описанный выше метод слишком прост, вы можете увеличить его сложность, посчитав n-граммы (группы слов) или даже грамматическую структуру, сначала пометив часть речи (например, много спама обычно представляет собой случайный мусор, заполненный с ключевыми словами, где отсутствие спама обычно имеет смысл). Вы можете реализовать несколько разных классификаторов и сравнить их точность.

Конечно, здесь есть кое-что еще, но эти методы хорошо документированы в Интернете, и это ваш проект, так что вам решать, исследовать его дальше. Удачи.

11
ответ дан 1 December 2019 в 13:21
поделиться

Некоторые идеи:

  • Программа, которая угадывает язык, на котором написан входной файл. Вам понадобятся образцы разных языков; Википедия - отличный источник.

  • Программа, которая на основе корпуса текста создает слова или предложения, аналогичные тем, которые содержатся в корпусе.

  • Найдите что-нибудь интересное, что можно сделать с Рукописью Войнича . Вы можете найти транскрипции здесь .

(Кстати, «корпус» - это просто причудливое слово для «связки текста». Из Википедии : «большой и структурированный набор текстов (теперь обычно хранится и обрабатывается в электронном виде)». Это слово обычно относится к текстам, которые вы используете для обучения и тестирования своего алгоритма, в отличие от неизвестных текстов, которые он встретит в полевых условиях.)

7
ответ дан 1 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: