Подтвердить что ты не робот

Слово разбивается на языки без пробелов между словами (например, азиатскими)?

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

Я не могу просто поставить пробел между каждым персонажем, потому что английский тоже должен работать. Я хотел бы решить эту проблему с помощью PHP или MySQL.

Могу ли я настроить MySQL для распознавания символов, которые должны быть их собственными индексами? Есть ли модуль PHP, который может распознавать эти символы, поэтому я мог бы просто выбросить пробелы вокруг индекса?

Обновление

Частичное решение:

$string_with_spaces =
  preg_replace( "/[".json_decode('"\u4e00"')."-".json_decode('"\uface"')."]/",
  " $0 ", $string_without_spaces );

Это делает класс символов из, по крайней мере, некоторых из символов, которые мне нужно обрабатывать специально. Я должен, вероятно, упомянуть, допустимо индексировать текст.

Кто-нибудь знает все диапазоны символов, которые мне нужно будет вставлять в пробе?

Кроме того, должен быть лучший, переносимый способ представления этих символов в PHP? Исходный код в Literal Unicode не идеален; Я не узнаю всех персонажей; они могут не отображаться на всех машинах, которые я должен использовать.

4b9b3361

Ответ 1

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

Я слышал об относительно успешных полнотекстовых поисковых приложениях, которые просто разделяют каждый отдельный символ как отдельное слово на китайском языке, просто применяя ту же "токенизацию" критериев поиска, предоставляемых конечными пользователями. Затем поисковая система обеспечивает лучший рейтинг для документов, которые снабжают символы-слова в том же порядке, что и критерии поиска. Я не уверен, что это можно распространить на такие языки, как японский, поскольку наборы символов Хиракана и Катаганы делают текст более похожим на европейские языки с коротким алфавитом.

ИЗМЕНИТЬ:
Ресурсы
Эта проблема, связанная с словом, а также связанные с ней проблемы, настолько нетривиальная, что все книги написаны об этом. См. Например Обработка информации CJKV (CJKV означает китайский, японский, корейский и вьетнамский языки, вы также можете использовать ключевое слово CJK, поскольку во многих текстах, Вьетнамцы не обсуждаются). См. Также Word Breaking на японском языке сложно для одного пейджера на эту тему.
Понятно, что большинство материалов, охватывающих эту тему, написано на одном из основных родных языков и поэтому ограничено для людей без относительной владения этими языками. По этой причине, а также для того, чтобы помочь вам проверить систему поиска, как только вы начнете внедрять логику прерывания слова, вам следует обратиться за помощью к носителю или двум.

Различные идеи
Ваша идея идентифицировать символы, которые систематически подразумевают слово break (скажем, цитаты, скобки, дефисные символы и т.д.), Является хорошим, и это, вероятно, одна эвристика, используемая некоторыми из разрывающих словосочетаний профессионального класса. Тем не менее, вы должны искать авторитетный источник для такого списка, а не собирать его с нуля, основываясь на анекдотических выводах.
Связанная идея состоит в том, чтобы сломать слова в переходах Кана-Канджи (но я не думаю, что это не так) и, возможно, в Хирагана-Катакана или наоборот. Переходы. Не связанный с разрывом слов, индекс может [-или не может-;-)] извлекать выгоду из систематического преобразования каждого, скажем, характера хираганы, в соответствующий характер катаканы. Просто необразованная идея! Я не знаю достаточно о японском языке, чтобы знать, поможет ли это; интуитивно, это было бы слабо связано с систематической конверсией акцентированных букв и т.д. к соответствующему не акцентированному письму, как это практикуется на нескольких европейских языках.

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

Не разочаровывайтесь, если это не так... Как сказано, это далеко не тривиально, и это может сэкономить вам время и деньги в долгосрочной перспективе, сделав паузу и прочитав книгу или две. Еще одна причина, чтобы попытаться узнать больше о "теории" и лучших практиках, заключается в том, что на данный момент вы, похоже, сосредоточены на слове, но вскоре поисковая система может также выиграть от -awareness; действительно, эти два вопроса связаны, по крайней мере, лингвистически связаны и могут быть полезны при совместном использовании.

Удачи вам в этом неприятном, но достойном стремлении.

Ответ 2

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

http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/spamfilter/japanese-tokenizer.el.txt

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

(Отредактировано, что есть лучший ответ здесь: Как классифицировать японские символы как кандзи или кану?)