Как реализовать нечеткий поиск для китайского пиньинь и японского ромадзи?

#fuzzy-search #cjk

#нечеткий поиск #cjk

Вопрос:

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

например. текст "示例文本" , который преобразуется в ["shi", "li", "wen", "ben"] латинизацию.

Пользователи должны иметь возможность сопоставить это, набрав

  • целые слоги, с пробелом или без него, например. shi li wen ben или shiliwenben
  • инициалы или первые несколько букв слогов, напр. shlwb или slwb
  • они также могут вводить только часть строки, например. wenben или wb (эти примеры соответствуют двум последним слогам приведенного выше текста).

Есть ли элегантный способ реализовать это?

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

Комментарии:

1. Хотя кажется возможным искать целые слоги и часть строки, я не вижу, как вы можете реализовать частичные строки. Например, что заставляет shlwb однозначно ссылаться на shi li wen ben вместо, например, shi hao li wen ben (кстати, я не знаю, правильное ли это предложение на китайском языке)

2. Re Hirabayashi Taro: оба должны возвращаться как результаты.