NLTK обратный поиск n-грамм

1

У меня есть корпус, который состоит из разных сообщений. Я использовал NLTK для создания серии биграмм и трехграмм. Я создал граммы, выполнив предварительную обработку, как удаление стоп-слов и вещей такого рода.

Как я могу взять биграмм (или три) и выполнить поиск, чтобы увидеть, существует ли он в новом сообщении? Я должен был предварительно обработать сообщение в какой-то момент, не так ли?

Или, если я могу сделать это другим способом, во время создания n-граммного процесса, можно ли индексировать сообщения и выводить как n-граммы, так и какое сообщение они применяются?

Теги:
nlp
nltk

1 ответ

3
Лучший ответ

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

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

Изображение 174551

Учитывая, что у вас может быть много n-граммов (особенно если сообщения длинны), вы можете захотеть просмотреть что-то вроде частоты обратного документа частоты, или tf-idf чтобы помочь вам обнаружить / tf-idf термины сильнее, чем больше общие термины. Как вы заметили, удалив стоп-слова из ваших данных, обычно такие термины, как "the", "and", "a" и т.д. (Которые мы называем "низкими информационными маркерами" или низкоинформативными словами в теории информации) я действительно рассказываю нам о документе под рукой, его основной теме, а также о наличии таких слов, как "the", "and", "a", позволяет нам устранить DocumentA из DocumentB (поскольку большинство документов имеют такие слова, как "the",, 'и', 'a', в них.

Эта бесплатная книга " Введение в информационный поиск" содержит несколько глав по построению индекса и сжатию индекса, которые могут быть полезны при изучении построения и запросов индексов. Если вы из математического фона, и линейная алгебра - это то, что вам знакомо, я бы рекомендовал другую книгу тех же авторов, которая называется "Основы статистической обработки естественного языка", которая охватывает много тех же материалов, что и учебник IR, но это дает гораздо более тщательный математический фон материалу, освещенному в учебнике IR.

  • 0
    Спасибо за отличный ответ, я определенно иду по этому пути.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню