Regex, чтобы извлечь слова из других языков - PullRequest
0 голосов
/ 10 августа 2011

Я знаю, что могу извлечь английские буквы и цифры с помощью регулярного выражения A-Za-z0-9.

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

Один из способов, которым я воспользовался, - это отфильтровать все, что я не хочу, из текста, а затем у меня остались одни слова, но этот подход занимает много процессорного времени и неэффективен в крупномасштабных приложениях.

Теперь мне было интересно, какие еще методы использовались или кто-то знает, которые можно использовать для анализа текста на других языках.

Как могут быть слова извлечены из таких языков, как китайский, японский и т. Д., Которые даже не используют пробелы между словами? Один из подходов, которые я использовал, чтобы различать слова, состоит в том, чтобы рассматривать стили и разрывы строк как метод, позволяющий понять, что они должны быть разными, но этот подход иногда бывает ненадежным, когда люди не используют много разрывов строк или форматирования для разделения разных слова.

Итак, подведем итог: как можно проанализировать другие языки с помощью регулярных выражений?

Ответы [ 4 ]

1 голос
/ 10 августа 2011

Предположим, у нас есть китайский словарь под рукой, и мы хотим разделить фразу следующим образом:буквы, как это возможно, при этом еще есть слово в словаре.Затем мы продвигаемся вперед на столько букв и повторяем.Такой подход, называемый жадным методом, дал бы нам такое разбиение фразы: [中國] [是] [位於] [亞洲] [東部] [的] [一] [個] [廣大] [地域] [或][國度]

Это не единственный подход, так как иногда лучший сплит не является жадным.Например, если у нас есть словарь {A, B, C, D, AB, BCD} и текст ABCD, то мы можем разделить текст как [AB] [C] [D] или как [A] [BCD],Последнее разделение может быть предпочтительнее первого.

Удобно, что эта веб-страница может демонстрировать разделение слов на практике: http://www.mdbg.net/chindict/chindict.php

1 голос
/ 10 августа 2011

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

Чтобы извлечь слова из китайского языка, вам нужен огромный словарь известных слов, и вы разбиваете предложение в соответствии с известными словами, предпочитая более длинные словарные записи (потому что каждый символ является допустимым словом).

Чтобы извлечь слова из японского, это зависит от стиля написания. Если текст целиком на кане, используйте словарный подход, упомянутый выше. Если текст представляет собой стандартное сочетание кандзи и каны, то вы, по крайней мере, можете знать, что каждый переход кана-кандзи почти наверняка является началом нового слова.

0 голосов
/ 10 августа 2011

Так же, как [A-Za-z0-9] может использовать используемый для английского текста (примерно), так и [\p{Script=Arabic}0-9] может использоваться для арабского текста (примерно).

0 голосов
/ 10 августа 2011

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

...