Nano Hash - криптовалюты, майнинг, программирование

анализ n-грамм имени на неанглийских языках (CJK и т. д.)

Я работаю над дедупликацией базы данных людей. Для первого прохода я следую базовому двухэтапному процессу, чтобы избежать операции O (n ^ 2) для всей базы данных, как описано в в литературе. Во-первых, я «блокирую» - перебираю весь набор данных и разделяю каждую запись на основе n-граммов И инициалов, присутствующих в имени. Во-вторых, все записи для каждого бункера сравниваются с использованием метода Яро-Винклера, чтобы определить вероятность того, что они представляют одного и того же человека.

Моя проблема - имена в Юникоде. Некоторые (хотя и не многие) из этих имен написаны на языках CJK (китайский, японский и корейский). Я понятия не имею, как найти границы слов для чего-то вроде инициалов в эти языки. Я понятия не имею, действителен ли анализ n-граммов для имен на языках, где имена могут состоять из двух символов. Я также не знаю, действительны ли в этом контексте расстояния редактирования строк или другие метрики сходства.

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


Ответы:


1

Еще немного информации о японском:

  1. Когда дело доходит до разделения имен на фамилию и имя, морфологические анализаторы, такие как mecab (упомянутые в ответе @ Holden), в основном работают, но уровень точности не будет очень высоким , потому что они будут правильно понимать только те имена, которые есть в их словаре (статистические возможности mecab в основном относятся к тегам POS и работе с неоднозначными словарными статьями, но если имя собственное отсутствует в словаре, mecab в большинстве случаев разделит его на отдельные символы, что почти всегда неверно). Чтобы проверить это, я использовал случайный список имен в Интернете (этот, который содержит имена 113 человек ), извлекли имена, удалили из них пробелы и протестировали mecab с помощью IPAdic. Получил ок. 21% названий ошиблись.

  2. «Правильные» японские имена, то есть имена японцев, состоят из фамилии (чаще всего 2, но иногда 1 или 3, кандзи) и имени (чаще всего 1 или 2, иногда 3 кандзи, но иногда 2-5 хираганы). Нет отчества и нет понятия инициалов. Вы можете улучшить вывод mecab, (1) используя исчерпывающий словарь фамилий, который можно составить из веб-ресурсов, (2) предполагая, что вывод неверен, если имеется более двух элементов, и затем используйте самодельный словарь фамилий, чтобы распознать часть фамилии, и если это не удастся, используйте правила разделения по умолчанию, основанные на количестве символов. Последнее не всегда будет точным.

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

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

  5. Хотя разделение, вероятно, на самом деле не требуется, вы должны решить ряд других проблем, не упомянутых в предыдущих ответах:

    1. Транслитерация иностранных имен. В зависимости от того, как была построена ваша база данных, могут быть ситуации, в которых используется западное имя, например «Обама» в одной записи, и японское представление катаканы «オ バ マ» в повторяющейся записи. К сожалению, преобразование латинского языка в катакану непросто, поскольку катакана пытается отразить произношение имени, которое может варьироваться в зависимости от языка или происхождения и акцента того, кто его произносит. Например. тот, кто впервые слышит имя «Обама», может испытать соблазн представить его как «オ バ ー マ», чтобы подчеркнуть долгую гласную в середине. Решение этой проблемы нетривиально и никогда не сработает идеально, но если вы считаете, что это важно для вашей проблемы с очищением, давайте рассмотрим ее в отдельном вопросе.

    2. Варианты кандзи. В японских именах (а также в японских представлениях некоторых китайцев или корейских имен) используются кандзи, которые считаются традиционными версиями современных кандзи. Например, многие распространенные фамилии содержат 澤, что является версией 沢. Например, фамилия Такадзава может записываться как 高 沢 или 高 澤. Обычно только один правильный вариант используется любым конкретным лицом с таким именем, но нередко неправильный вариант используется в записи базы данных. Поэтому вам обязательно нужно привести традиционные варианты к современным, прежде чем сравнивать имена. Эта веб-страница предоставляет сопоставление, которое, конечно, не является исчерпывающим, но, вероятно, Достаточно хорошо для ваших целей.

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

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

    5. Как уже говорилось, некоторые имена (особенно женские) написаны хираганой. Может случиться так, что в некоторых случаях эти же имена написаны катаканой. Сопоставление между хираганой и катаканой возможно тривиально. Вам следует подумать о нормализации всех Кана (то есть хираганы и катаканы) до общего представления (либо хираганы, либо катаканы), прежде чем проводить какие-либо сравнения.

    6. Также может случиться так, что некоторые имена кандзи представлены с помощью Кана. Это связано с тем, что тот, кто сделал запись в базе данных, возможно, не знал правильного кандзи для имени (особенно с именами, угадать правильный кандзи после прослушивания имени, например, по телефону, очень часто невозможно даже для носителей языка). К сожалению, сопоставление между представлениями кандзи и представлениями кана очень сложно и весьма неоднозначно, например, 真, 誠 и 実 являются возможными кандзи для имени «Макото». Любой человек с таким именем сочтет правильным для себя только одно из них, но невозможно узнать, какое из них, если единственное, что вы знаете, это то, что имя - «Макото». Но Кана основана на звуке, поэтому все три версии одинаковы マ コ ト в Катакане. Словари, встроенные в морфологические анализаторы, такие как mecab, предоставляют сопоставления, но поскольку существует более одного возможного кандзи для любой последовательности Кана и наоборот, фактическое использование этого во время очистки данных значительно усложнит ваш алгоритм. В зависимости от того, как изначально была создана ваша база данных, это может быть или не быть актуальной проблемой.

Специальное редактирование имен авторов публикации: японские переводы неяпонских книг обычно транслитерируют имя автора на катакана. Например. в списке рекомендаций по книгам газеты Asahi сегодня 30 книг; 7 имеют имя западного автора на катакане. У них даже есть сокращенные имена и вторые инициалы, которые они хранят на латыни, например

H ・ S ・ フ リ ー ド マ ン и L ・ R ・ マ ー テ ィ ン

что соответствует

H.S. Фридман (или Фридман, или Фридман, или Фридман?)

и

L.R. Мартин (или Матин, или Махтин?)

Я бы сказал, что это является примером наиболее распространенного способа работы с именами авторов неяпонского происхождения книг:

  1. Инициалы сохранены как латинские.
  2. Несокращенные части имени даны в катакане (но нет однозначно определенного сопоставления между латинским и катаканой, как описано в 5.1)
  3. Сохраняется порядок: первое, среднее, фамилия. Это очень распространенное соглашение для имен авторов, но в базе данных клиентов оно может отличаться.
  4. Для разделения элементов используются либо пробел, либо средняя точка (как указано выше), либо стандартная точка ASCII.

Итак, если ваш проект связан с именами авторов книг, я считаю, что следующее верно в отношении неяпонских авторов:

mecab для японских брендов. и еще какой-то текст. Я полагаю, что вы могли бы добиться лучших результатов, тренируя его по списку японских имен. К сожалению, он на C, но мы все равно использовали его на Java через JNI, вы могли бы сделать что-то подобное в своем коде Python.

05.04.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

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


© 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование