Тестирование на японские / китайские иероглифы в строке - PullRequest
6 голосов
/ 24 апреля 2009

У меня есть программа, которая читает кучу текста и анализирует его. Текст может быть на любом языке, но мне нужно проверить японский и китайский специально, чтобы проанализировать их по-разному.

Я прочитал, что могу проверить каждый символ по номеру Юникода, чтобы определить, находится ли он в диапазоне символов CJK. Это полезно, однако я хотел бы разделить их, если это возможно, для обработки текста в разных словарях. Есть ли способ проверить, является ли символ японским или китайским?

Ответы [ 6 ]

6 голосов
/ 24 апреля 2009

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

  1. Упрощения - если персонаж, которого вы тестируете, является КНР Упрощение , например, 门 доступно только на основном китайском языке.
  2. Кана - если символ является одним из многих японских кана символов, таких как あ い う え お, то текстовый блок, с которым вы работаете, определенно является японским.

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

2 голосов
/ 24 апреля 2009

Процесс разработки Unicode включал в себя объединение Хань. Это связано с тем, что многие японские иероглифы происходят от китайских иероглифов или совпадают с ними; аналогично с корейским. Есть некоторые символы (катакана и хирагана - см. глава 12 стандарта Unicode v5.1.0), обычно используемые на японском языке, которые указывают, что текст был японским, а не китайским, но я считаю, что это будет статистический тест, а не окончательный.

Ознакомьтесь с книгой О'Рейли о Обработка информации CJKV (CJKV - сокращение от китайского, японского, корейского, вьетнамского; у меня где-то скрывается предшественник CJK). Есть также книга О'Рейли о Unicode Explained , которая может быть некоторой помощью, хотя, вероятно, не для этого вопроса (я не припоминаю обсуждение того, как идентифицировать японский и китайский текст).

1 голос
/ 24 апреля 2009

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

Однако я только учу китайский, поэтому я не эксперт.

0 голосов
/ 15 декабря 2010

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

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

Конечно, если вы имеете дело с текстом Unicode, вы можете встретить редкие символы или смешанные языки, которые могут вызвать эвристику, поэтому вам лучше посчитать типы символов для вынесения суждения.

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

Раньше у меня был какой-то написанный код, который выполнял двоичный поиск по кодам, и он был очень быстрым даже в JavaScript - хотя я мог потерять его в своих путешествиях (-:

0 голосов
/ 01 сентября 2009

Обходной путь - проверить кодировку перед ее преобразованием в Unicode.

0 голосов
/ 04 мая 2009

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

...