Принцип сегментации китайских слов и введение общей библиотеки Python для сегментации китайских слов

Python алгоритм GitHub Нейронные сети

принцип

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

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

  • сегментация слов на основе правил
  • Метод статистической сегментации слов
  • Семантическая сегментация слов
  • Сегментация слов на основе понимания

Ниже мы суммируем каждый из этих методов.

сегментация слов на основе правил

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

  • Метод максимального соответствия (ММ). Основная идея такова: предположим, что количество китайских символов в самой длинной записи в словаре автоматической сегментации слов равно i, затем возьмите первые i символов в текущей последовательности строк обрабатываемого материала в качестве поля соответствия и найдите слово. словарь сегментации.Если такое i-слово найдено, сопоставление успешное, и совпадающее поле сегментируется как слово, если такое i-слово не может быть найдено в словаре, сопоставление не выполняется, последний китайский иероглиф удаляется из поля совпадения, а оставшиеся символы используются в качестве нового поля совпадения, затем совпадение и так далее, пока совпадение не будет успешным. Статистические результаты показывают, что частота ошибок этого метода составляет 1/169.
  • Метод обратного максимального соответствия (RMM). Процесс сегментации слов в этом методе такой же, как и в методе ММ, разница в том, что обработка начинается с конца предложения (или артикля), и каждый раз, когда сопоставление не удается, предшествующий китайский иероглиф удаляется. Статистические результаты показывают, что частота ошибок этого метода составляет 1/245.
  • пословный обход. Слова в словаре ищутся слово за словом во всем материале, который обрабатывается в порядке убывания от длинного к короткому, пока все слова не будут сегментированы. Независимо от того, насколько велик словарь сегментации слов или насколько мал обрабатываемый материал, словарь сегментации слов должен быть сопоставлен снова.
  • Настройте метод метки сегментации. Различают естественные и неестественные знаки деления. Естественные знаки сегментации относятся к небуквенным символам, встречающимся в статье, таким как знаки препинания и т. д.; неестественные знаки — это использование аффиксов и слов, не образующих слов (включая односложные слова, многосложные слова, звукоподражания и т. д.). .). Чтобы настроить метод меток сегментации, сначала соберите много меток сегментации, найдите метки сегментации при сегментации слов, разделите предложение на несколько более коротких полей, а затем используйте MM, RMM или другие методы для точной обработки. Этот метод не является методом сегментации слов в истинном смысле, а является методом предварительной обработки автоматической сегментации слов. Требуется дополнительное время для сканирования меток сегментации и увеличения объема памяти для хранения этих неестественных меток сегментации.
  • Метод наилучшего соответствия (OM). Этот метод делится на метод прямого наилучшего сопоставления и метод обратного наилучшего сопоставления.Начальная точка состоит в том, чтобы упорядочить записи в словаре в соответствии с порядком частоты слов, чтобы сократить время поиска словаря сегментации слов и достичь лучший эффект, тем самым уменьшая временную сложность сегментации слов и ускоряя сегментацию слов. По сути, этот метод не является методом сегментации слов в чистом виде, это всего лишь способ организации словаря сегментации слов. В словаре сегментации слов метода ОМ перед каждым словом должен быть элемент данных с заданной длиной, поэтому увеличивается пространственная сложность, что не влияет на повышение точности сегментации слов, а временная сложность обработка сегментации слов уменьшена.

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

Метод статистической сегментации слов

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

Основными статистическими моделями, применяемыми этим методом, являются: N-грамма, модель Хидена-Маркова (HMM), модель максимальной энтропии (ME), условные случайные поля, CRF и др.

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

Семантическая сегментация слов

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

  • Метод расширенной сети передачи. Метод основан на концепции конечного автомата. Конечный автомат может распознавать только обычные языки, и первое расширение конечного автомата делает его рекурсивным, образуя рекурсивную сеть передачи (RTN). В RTN метки на дуге могут быть не только конечными символами (словами в языке) или нетерминальными символами (частями речи), но также вызывать другое имя подсети для классификации нетерминальных символов (таких как слова или строки лексических статей). Таким образом, когда компьютер запускает подсеть, он может вызывать другие подсети, а также может вызывать рекурсивно. Использование сети передачи лексического расширения позволяет взаимодействовать с этапом синтаксической обработки сегментации слов и понимания языка, а также эффективно устраняет неоднозначность сегментации китайских слов.
  • Метод матричных ограничений. Основная идея состоит в том, чтобы сначала установить матрицу грамматических ограничений и матрицу семантических ограничений, в которых элементы указывают, являются ли слова с определенной частью речи и слова с другой частью речи соседними с грамматическими правилами, а слова, принадлежащие семантическому класс и слова, принадлежащие другому Логично, что слова семантического класса соседствуют друг с другом, и машина использует это для ограничения результатов сегментации слов при сегментации.

Сегментация слов на основе понимания

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

  • Сегментация слов в экспертной системе. С точки зрения экспертной системы, знания о сегментации слов (включая знания о сегментации слов, основанные на здравом смысле, и эвристические знания для сегментации с устранением неоднозначности, то есть правила неоднозначной сегментации) не зависят от механизма вывода, который реализует процесс сегментации слов, так что обслуживание базы знаний и реализация механизма вывода. Они не мешают друг другу, что упрощает обслуживание базы знаний и управление ею. Он также имеет возможность обнаруживать неоднозначные поля пересечения и неоднозначные комбинации неоднозначных полей и некоторые функции самообучения.
  • Токенизация нейронной сети. Метод заключается в моделировании человеческого мозга параллельной, распределенной обработки и создания численной вычислительной модели работы. Он сохраняет разрозненный и неявный метод знания сегментации слов в нейронной сети, изменяет внутренние веса посредством самообучения и обучения для достижения правильного результата сегментации слов и, наконец, выдает результат автоматической сегментации нейронной сети, такой как использование LSTM. , ГРУ и другие модели нейронных сетей и т. д.
  • Нейросетевая экспертная система интегрировала метод сегментации слов. Метод сначала запускает нейронную сеть для сегментации слов.Когда нейронная сеть не может дать точную сегментацию вновь появившихся слов, экспертная система активируется для анализа и суждения, а рассуждения основаны на базе знаний для получения предварительного анализа, и запускается механизм обучения для анализа нейронной сети для обучения. Этот метод может в полной мере использовать преимущества как нейронной сети, так и экспертной системы, а также еще больше повысить эффективность сегментации слов.

Вышеизложенное является базовым введением в алгоритм сегментации слов Далее мы представим некоторые более практичные библиотеки Python для сегментации слов и методы их использования.

инструмент сегментации слов

Вот несколько репрезентативных библиотек Python, которые поддерживают сегментацию слов, в том числе:

1. jieba

Библиотека Python, посвященная сегментации слов, GitHub:github.com/fxsjy/jieba, эффект сегментации слов лучше.

Поддерживаются три режима сегментации слов:

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

Кроме того, jieba поддерживает традиционную сегментацию слов и пользовательские словари.

Алгоритм, который он использует, представляет собой метод статистической сегментации слов, который в основном включает следующее:

  • Эффективное сканирование графа слов на основе словаря префиксов для создания ориентированного ациклического графа (DAG), состоящего из всех возможных словообразований китайских иероглифов в предложении.
  • Динамическое программирование используется для поиска пути с максимальной вероятностью, и находится максимальная комбинация сегментации на основе частоты слов.
  • Для незарегистрированных слов используется модель HMM, основанная на способности китайских иероглифов образовывать слова, и применяется алгоритм Витерби.

точная сегментация слов режима

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

1234import jiebastring = '这个把手该换了,我不喜欢日本和服,别把手放在我的肩膀上,工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作'result = jieba.lcut(string)print(len(result), '/'.join(result))

результат:

1
38 Это / обрабатывать / следует изменить /, / мне / не / нравится / японское / кимоно /, / не / обрабатывать / на / моем / плече / на /, / Министерство промышленности и информационных технологий / женщина-сотрудник / ежемесячно /pass/subordinate/department/all/to/personal/account/24/port/switch/etc/technical/device/of/installation/work

Видно, что эффект сегментации все еще хороший.

сегментация слов в полном режиме

Чтобы использовать сегментацию слов в полном режиме, необходимо добавить параметр cut_all и установить для него значение True. Код выглядит следующим образом:

12result = jieba.lcut(string, cut_all=True)print(len(result), '/'.join(result))

Результат выглядит следующим образом:

1
51 Это / ручка / следует изменить / / / мне / не / нравится / японское / кимоно / / / не / ручка / на / моем / плече / на / / / Министерство промышленности и информационных технологий / девственница / женщина-офицер / Сотрудник/ежемесячно/менструация/процесс/подчиненный/отдел/кому/кому/личное/устное/признание/24/устное/обмен/обмен/обмен/и т.д./технический/технический/генитальный/устройство/установки/установщик/фитнес /Работа

Сегментация слов в режиме поисковой системы

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

12result = jieba.lcut_for_search(string)print(len(result), '/'.join(result))

Результат выглядит следующим образом:

1
42 Это / обрабатывать / следует изменить /, / мне / не / нравится / Япония / кимоно /, / не делать / обрабатывать / на / моём / плече / на /, / Промышленно-информационное управление / клерк / женщина-клерк/ Ежемесячно /pass/subordinate/department/all/to/personal/account/24/interface/exchange/exchange/exchange/etc/technical/technical/device/installation/work

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

123jieba.add_word('日本和服')result = jieba.lcut(string)print(len(result), '/'.join(result))

Результат выглядит следующим образом:

1
37 Это/обрабатывать/пора менять/,/мне/не/нравится/японское кимоно/,/не/обрабатывать/надевать/мое/на/плечо/на/, /Промышленно-информационное управление/ Женщина-офицер/Ежемесячно/После/подчиненный/отдел/все/на/личный/счет/24/порт/переключатель/и т. д./техническое/устройство/установки/работы

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

маркировка частями речи

Кроме того, jieba также поддерживает маркировку части речи, которая может выводить часть речи каждого слова после сегментации слова. Примеры следующие:

12words = pseg.lcut(string)print(list(map(lambda x: list(x), words)))

результат операции:

1
[['this', 'r'], ['handle', 'v'], ['this', 'r'], ['change', 'v'], ['had', 'ul'] , [',', 'x'], ['i', 'r'], ['no', 'd'], ['like', 'v'], ['японское кимоно', 'x' ], [',', 'x'], ['не', 'r'], ['обработать', 'v'], ['положить', 'v'], ['i', ' r'], ['of', 'uj'], ['плечо', 'n'], ['up', 'f'], [',', 'x'], ['Управление промышленности и информации ', 'n'], ['Женщина-офицер', 'n'], ['ежемесячно', 'r'], ['пасс', 'p'], ['подчиненный', 'v'], [' отдел', 'н'], ['ду', 'д'], ['хочу', 'в'], ['лично', 'н'], ['объяснить', 'н'], [ '24', 'm'], ['port', 'n'], ['switch', 'n'], ['etc', 'u'], ['technical', 'n'], [ 'устройство', 'n'], [''', 'uj'], ['install', 'v'], ['work', 'vn']]

Описание частей речи см.gist.GitHub.com/reed2007/601….

2. SnowNLP

SnowNLP: Simplified Chinese Text Processing, который может легко обрабатывать китайский текстовый контент, был вдохновлен TextBlob. Поскольку большинство библиотек обработки естественного языка в основном предназначены для английского языка, я написал класс, удобный для обработки китайской библиотеки, и в отличие от TextBlob, NLTK здесь не используется, все алгоритмы реализованы сами по себе, включены некоторые обученные словари. Адрес гитхаба:GitHub.com/I snow FY/ Скажи нет….

Причастие

Сегментация слов здесь основана на генеративной модели на основе символов, адрес статьи:ACL Web.org/антология//…, мы по-прежнему используем приведенный выше пример для иллюстрации, соответствующие инструкции по использованию следующие:

123456from snownlp import SnowNLP string = '这个把手该换了,我不喜欢日本和服,别把手放在我的肩膀上,工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作's = SnowNLP(string)result = s.wordsprint(len(result), '/'.join(result))

результат операции:

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

После наблюдения можно обнаружить, что эффект сегментации слов не очень идеален.Кимоно было отделено, Управление промышленности и информации также было отделено, и женщина-офицер также была отделена.

Кроме того, SnowNLP также поддерживает множество функций, таких как тегирование частей речи (HMM), анализ тональности, преобразование пиньинь (дерево Trie), создание ключевых слов и сводки (TextRank).

Давайте просто посмотрим на пример:

123print('Tags:', list(s.tags))print('Sentiments:', s.sentiments)print('Pinyin:', s.pinyin)

результат операции:

123Tags: [('这个', 'r'), ('把手', 'Ng'), ('该', 'r'), ('换', 'v'), ('了', 'y'), (',', 'w'), ('我', 'r'), ('不', 'd'), ('喜欢', 'v'), ('日本', 'ns'), ('和', 'c'), ('服', 'v'), (',', 'w'), ('别把手', 'ad'), ('放在', 'v'), ('我', 'r'), ('的', 'u'), ('肩膀', 'n'), ('上', 'f'), (',', 'w'), ('工', 'j'), ('信处女', 'j'), ('干事', 'n'), ('每月', 'r'), ('经过', 'p'), ('下属', 'v'), ('科室', 'n'), ('都', 'd'), ('要', 'v'), ('亲口', 'd'), ('交代', 'v'), ('24', 'm'), ('口', 'q'), ('交换机', 'n'), ('等', 'u'), ('技术性', 'n'), ('器件', 'n'), ('的', 'u'), ('安装', 'vn'), ('工作', 'vn')]Sentiments: 0.015678817603646866Pinyin: ['zhe', 'ge', 'ba', 'shou', 'gai', 'huan', 'liao', ',', 'wo', 'bu', 'xi', 'huan', 'ri', 'ben', 'he', 'fu', ',', 'bie', 'ba', 'shou', 'fang', 'zai', 'wo', 'de', 'jian', 'bang', 'shang', ',', 'gong', 'xin', 'chu', 'nv', 'gan', 'shi', 'mei', 'yue', 'jing', 'guo', 'xia', 'shu', 'ke', 'shi', 'dou', 'yao', 'qin', 'kou', 'jiao', 'dai', '24', 'kou', 'jiao', 'huan', 'ji', 'deng', 'ji', 'shu', 'xing', 'qi', 'jian', 'de', 'an', 'zhuang', 'gong', 'zuo']

3. THULAC

THULAC (THU Lexical Analyzer for Chinese) — это набор инструментов для китайского лексического анализа, разработанный Лабораторией обработки естественного языка и социальных гуманитарных вычислений Университета Цинхуа, ссылка на GitHub:GitHub.com/Dizzy Wife/TH UL…, с функциями сегментации китайских слов и тегами частей речи. THULAC обладает следующими характеристиками:

  • сильная способность. Он обучается с использованием крупнейшей в мире искусственной сегментации слов и тегирования частей речи китайского корпуса (около 58 миллионов слов), а способность тегирования моделей является мощной.
  • Высокая точность. Значение F1 набора инструментов для сегментации слов в стандартном наборе данных Chinese Treebank (CTB5) может достигать 97,3%, а значение F1 тегирования частей речи может достигать 92,9%, что сравнимо с лучшим методом в этом наборе данных.
  • Быстрее. Скорость одновременной сегментации слов и маркировки частей речи составляет 300 КБ/с, и он может обрабатывать около 150 000 слов в секунду. Только скорость сегментации слов может достигать 1,3 МБ/с.

Рассмотрим эффект сегментации слов на примере:

123456import thulac string = '这个把手该换了,我不喜欢日本和服,别把手放在我的肩膀上,工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作't = thulac.thulac()result = t.cut(string)print(result)

результат операции:

1
[['это', 'р'], ['дескриптор', 'н'], ['это', 'в'], ['изменить', 'в'], ['было', 'и'] , [',', 'w'], ['i', 'r'], ['no', 'd'], ['like', 'v'], ['japan', 'ns'] , ['Кимоно', 'н'], [',', 'ж'], ['Не трогать', 'н'], ['положить', 'в'], ['в', ' p' ], ['i', 'r'], [''', 'u'], ['плечо', 'n'], ['вверх', 'f'], [',', ' w' ], ['Управление промышленности и информации', 'n'], ['Женщина', 'a'], ['Офицер', 'n'], ['Ежемесячно', 'r'], ['После ', 'р'], ['подчиненный', 'в'], ['отдел', 'н'], ['все', 'д'], ['хочу', 'в'], ['в человек', 'd'], ['Бухгалтерский учет', 'v'], ['24', 'm'], ['kou', 'q'], ['switch', 'n'], [' etc', 'u'], ['техническое', 'n'], ['устройство', 'n'], ['из', 'u'], ['установка', 'v'], [' рабочий', 'в']]

4. NLPIR

Система сегментации слов NLPIR, ранее известная как система лексического анализа ICTCLAS, выпущенная в 2000 году, ссылка на GitHub:GitHub.com/НЛП IR-команда/…, представляет собой систему сегментации китайских слов, разработанную доктором Чжан Хуапином из Пекинского технологического института. После более чем десяти лет непрерывного совершенствования она обладает богатыми функциями и высокой производительностью. NLPIR — это полный набор программного обеспечения для обработки и обработки исходных текстовых наборов, обеспечивающий визуальное отображение эффекта обработки промежуточного программного обеспечения, а также может использоваться в качестве инструмента обработки данных небольшого масштаба. Основные функции включают в себя: сегментацию китайских слов, маркировку частей речи, распознавание именованных объектов, пользовательский словарь, обнаружение новых слов и извлечение ключевых слов. Кроме того, для функции сегментации слов у него есть версия, реализованная на Python, ссылка на GitHub:GitHub.com/tipsro ten/piano….

Способ применения следующий:

123456import pynlpir pynlpir.open()string = '这个把手该换了,我不喜欢日本和服,别把手放在我的肩膀上,工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作'result = pynlpir.segment(string)print(result)

Результаты приведены ниже:


1[('这个', 'pronoun'), ('把', 'preposition'), ('手', 'noun'), ('该', 'pronoun'), ('换', 'verb'), ('了', 'modal particle'), (',', 'punctuation mark'), ('我', 'pronoun'), ('不', 'adverb'), ('喜欢', 'verb'), ('日本', 'noun'), ('和', 'conjunction'), ('服', 'verb'), (',', 'punctuation mark'), ('别', 'adverb'), ('把', 'preposition'), ('手', 'noun'), ('放', 'verb'), ('在', 'preposition'), ('我', 'pronoun'), ('的', 'particle'), ('肩膀', 'noun'), ('上', 'noun of locality'), (',', 'punctuation mark'), ('工', 'noun'), ('信', 'noun'), ('处女', 'noun'), ('干事', 'noun'), ('每月', 'pronoun'), ('经过', 'preposition'), ('下属', 'verb'), ('科室', 'noun'), ('都', 'adverb'), ('要', 'verb'), ('亲口', 'adverb'), ('交代', 'verb'), ('24', 'numeral'), ('口', 'classifier'), ('交换机', 'noun'), ('等', 'particle'), ('技术性', 'noun'), ('器件', 'noun'), ('的', 'particle'), ('安装', 'verb'), ('工作', 'verb')]

Здесь ручка и кимоно также разделены.

5. NLTK

NLTK, Natural Language Toolkit, представляет собой пакет инструментов для обработки естественного языка, различных функций, связанных с обработкой NLP, ссылка на GitHub:github.com/nltk/nltk.

Однако NLTK не поддерживает сегментацию китайских слов. Примеры:

12345from nltk import word_tokenize string = '这个把手该换了,我不喜欢日本和服,别把手放在我的肩膀上,工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作'result = word_tokenize(string)print(result)

результат:

1['这个把手该换了,我不喜欢日本和服,别把手放在我的肩膀上,工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作']

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

Способ применения следующий:

12345import fool string = '这个把手该换了,我不喜欢日本和服,别把手放在我的肩膀上,工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作'result = fool.cut(string)print(result)

результат операции:

1[['这个', '把手', '该', '换', '了', ',', '我', '不', '喜欢', '日本', '和服', ',', '别', '把', '手', '放', '在', '我', '的', '肩膀', '上', ',', '工信处', '女', '干事', '每月', '经过', '下属', '科室', '都', '要', '亲', '口', '交代', '24', '口', '交换机', '等', '技术性', '器件', '的', '安装', '工作']]

Видно, что эффект от этой сегментации все еще хороший.

Кроме того, можно выполнять тегирование частей речи и распознавание сущностей:

1234result = fool.pos_cut(string)print(result)_, ners = fool.analysis(string)print(ners)

результат операции:

12[[('这个', 'r'), ('把手', 'n'), ('该', 'r'), ('换', 'v'), ('了', 'y'), (',', 'wd'), ('我', 'r'), ('不', 'd'), ('喜欢', 'vi'), ('日本', 'ns'), ('和服', 'n'), (',', 'wd'), ('别', 'd'), ('把', 'pba'), ('手', 'n'), ('放', 'v'), ('在', 'p'), ('我', 'r'), ('的', 'ude'), ('肩膀', 'n'), ('上', 'f'), (',', 'wd'), ('工信处', 'ns'), ('女', 'b'), ('干事', 'n'), ('每月', 'r'), ('经过', 'p'), ('下属', 'v'), ('科室', 'n'), ('都', 'd'), ('要', 'v'), ('亲', 'a'), ('口', 'n'), ('交代', 'v'), ('24', 'm'), ('口', 'q'), ('交换机', 'n'), ('等', 'udeng'), ('技术性', 'n'), ('器件', 'n'), ('的', 'ude'), ('安装', 'n'), ('工作', 'n')]][[(12, 15, 'location', '日本')]]

6. LTP

Платформа языковых технологий (LTP) представляет собой полный набор систем обработки китайского языка, разработанных Исследовательским центром социальных вычислений и информационного поиска Харбинского технологического института в течение десяти лет. LTP формирует представление результатов языковой обработки на основе XML и на этой основе предоставляет полный набор многофункциональных и эффективных восходящих модулей обработки китайского языка (включая 6 основных технологий обработки китайского языка, таких как лексическая, синтаксическая, семантическая и т. д.), и основан на библиотеке динамической компоновки (Dynamic Link Library, DLL), интерфейсе прикладного программирования, инструментах визуализации и может использоваться в виде сетевых сервисов (Web Service).

LTP имеет версию Python, адрес GitHub:GitHub.com/hit-SCI R/друзья…, Кроме того, вам нужно скачать модель при запуске, модель все еще относительно большая, адрес загрузки:granny.love/download.contract….

Пример кода выглядит следующим образом:

12345678from pyltp import Segmentor string = '这个把手该换了,我不喜欢日本和服,别把手放在我的肩膀上,工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作'segmentor = Segmentor()segmentor.load('./cws.model')result = list(segmentor.segment(string))segmentor.release()print(result)

результат операции:

1
41 Это / обрабатывать / следует / изменить / изменить /, / мне / не / нравится / Япония / кимоно /, / не / клади / руку / на / мое / плечо / плечо /, / Gongxin / девственницу / секретаршу / ежемесячно/пропускной/подчиненный/отдел/все/на/личный/аккаунт/24/порт/переключатель/и т.д./техническое/устройство/установки/работы

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

Вышеупомянутое является основным использованием некоторых библиотек сегментации слов, лично рекомендуемыми являются jieba, THULAC, FoolNLTK.

Справочный источник


Этот ресурс был впервые опубликован в личном блоге Цуй Цинцай Цзин Ми:Практическое руководство по разработке веб-краулера на Python3 | Цзин Ми

Если вы хотите узнать больше информации о поисковых роботах, обратите внимание на мой личный публичный аккаунт WeChat: Coder of Attack.

WeChat.QQ.com/Day/5 Это радость VE Z…(автоматическое распознавание QR-кода)