Regexp для токенизации английского текста - PullRequest
8 голосов
/ 13 сентября 2010

Какое было бы лучшее регулярное выражение для токенизации английского текста?

Под английским токеном я подразумеваю атом, состоящий из максимального количества символов, которые могут быть осмысленно использованы для целей НЛП. Аналогия - это «токен» в любом языке программирования (например, в Си, «{», «[», «привет», «&» и т. Д. Могут быть токенами). Есть одно ограничение: хотя английские знаки препинания могут быть «значимыми», давайте просто проигнорируем их ради простоты, когда они не появляются в середине \ w +. Итак, «Привет, мир». дает «привет» и «мир»; Точно так же: «Вы хорошо выглядите». может принести либо [вы, хорошо, хорошо выглядеть] или [вы, хорошо, хорошо выглядеть].

Ответы [ 4 ]

5 голосов
/ 14 сентября 2010

Токенизация Treebank

токенизация Penn Treebank (PTB) - достаточно распространенная схема токенизации, используемая для работы по обработке естественного языка (NLP).

Вы можете найти скрипт sed с соответствующими регулярными выражениями для получения этой токенизации здесь .

Пакеты программ

Однако большинство пакетов NLP предоставляют готовые токенизаторы, поэтому вам не нужно писать свои собственные. Например, если вы используете python, вы можете просто использовать TreebankWordTokenizer , поставляемый с NLTK . Если вы используете основанный на Java Stanford Parser , он по умолчанию токенизирует любое предложенное вами предложение, используя edu.stanford.nlp.processor.PTBTokenizer .

2 голосов
/ 14 сентября 2010

Вы, вероятно, не должны пытаться использовать регулярное выражение для токенизации английского текста. В английском языке некоторые токены имеют несколько разных значений, и вы можете узнать, какое из них правильное, понимая контекст, в котором они находятся, и это требует понимания значения текста в некоторой степени. Примеры:

  • Символ ' может быть апострофом или может использоваться как одиночная кавычка для цитирования некоторого текста.
  • Точка может быть концом предложения или обозначать аббревиатуру. Или в некоторых случаях он может выполнять обе роли одновременно.

Попробуйте вместо этого анализатор естественного языка. Например, вы можете использовать Stanford Parser . Он свободен в использовании и будет выполнять намного лучшую работу, чем любое регулярное выражение при разбивании текста на английский. Это всего лишь один пример - есть также много других библиотек NLP, которые вы можете использовать.

1 голос
/ 14 сентября 2010

Вы можете разделить на [^\p{L}]+. Он будет разделен на каждую группу символов, которая не содержит букв.


Ресурсы:

0 голосов
/ 14 сентября 2010

Есть некоторые сложности.

Слово будет иметь [A-Za-z0-9\-]. Но у вас могут быть и другие разделители, кроме одного слова! Вы можете начать с [(\s] и закончить [),.-\s?:;!]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...