1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fxsjy-jieba

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

jieba

"结巴" — китайская библиотека для сегментации текста на слова на языке Python: лучшая библиотека для китайской сегментации слов.

  • Прокрутите вниз для английской документации.

Особенности

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

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

  • Поддержка пользовательских словарей

Онлайн демонстрация

http://jiebademo.ap01.aws.af.cm/

(Поддерживается Appfog)

Установка для Python 2.x

  • Автоматическая установка: easy_install jieba или pip install jieba
  • Полуавтоматическая установка: сначала скачайте http://pypi.python.org/pypi/jieba/, распакуйте архив и выполните команду python setup.py install
  • Ручная установка: поместите директорию jieba в текущую директорию или в site-packages
  • Импортирование через import jieba

Установка для Python 3.x

  • В настоящее время основной ветвью является только поддержка Python 2.x
  • Ветка для Python 3.x также доступна и практически полностью готова к использованию: https://github.com/fxsjy/jieba/tree/jieba3k``` git clone https://github.com/fxsjy/jieba.git git checkout jieba3k python setup.py install

Алгоритмы
========

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

Функциональность 1): Сегментация
==========

* Метод `jieba.cut` принимает два входных параметра: 1) первый параметр — это строка, которую требуется сегментировать; 2) параметр `cut_all` управляет выбором полного режима.
* Метод `jieba.cut_for_search` принимает один параметр: строку для сегментации, этот метод предназначен для сегментации текста при создании обратного индекса в поисковых системах, имеет более мелкое зерно.
* Обратите внимание: строка для сегментации может быть строкой gbk, utf-8 или unicode.
* Методы `jieba.cut` и `jieba.cut_for_search` возвращают объект типа generator, который можно использовать в цикле `for` для получения каждого слова после сегментации (unicode), либо преобразовать его в список с помощью `list(jieba.cut(...))`.

Код примера (токенизация)
```markdown
# coding=utf-8
import jieba
```seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print "Полный режим:", "/ ".join(seg_list)  # Полный режим

seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print "По умолчанию:", "/ ".join(seg_list)  # Точечный режим

seg_list = jieba.cut("他来到了网易杭研大厦")  # По умолчанию точечный режим
print ", ".join(seg_list)

seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # Режим поиска
print ", ".join(seg_list)

Выходные данные:

【Полный режим】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学

【Точечный режим】: 我/ 来到/ 北京/ 清华大学

【Распознание новых слов】: 他, 来到, 了, 网易, 杭研, 大厦   (Здесь, «杭研» отсутствует в словаре, но был распознан алгоритмом Viterbi)

【Режим поиска】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造

Функционал 2): Добавление пользовательского словаря

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

  • Использование: jieba.load_userdict(file_name) # file_name — путь к пользовательскому словарю

  • Формат словаря такой же, как и в dict.txt; каждое слово занимает одну строку; каждая строка состоит из трёх частей: слова, частоты использования и типа слова (может быть пропущено); разделены пробелами.

  • Пример: * Пользовательский словарь: https://github.com/fxsjy/jieba/blob/master/test/userdict.txt

    • Пример использования: https://github.com/fxsjy/jieba/blob/master/test/test_userdict.py

      • До добавления словаря: Ли XiaoFu / является / инновационным / директором / также / является / облачным / вычислением / специалистом /

      • После добавления пользовательского словаря: Ли XiaoFu / является / директором по инновациям / также / является / экспертом по облачному вычислению /

  • "Улучшение корректировки ошибок с помощью пользовательских словарей" --- https://github.com/fxsjy/jieba/issues/14

Функционал 3): Выделение ключевых слов

  • jieba.analyse.extract_tags(sentence, topK) # Нужно импортировать jieba.analyse

  • sentence — текст для выделения ключевых слов

  • topK — количество ключевых слов с наибольшим весом TF/IDF, по умолчанию равно 20 Код примера (извлечение ключевых слов):

    https://github.com/fxsjy/jieba/blob/master/test/extract_tags.py

Функционал 4): часть-of-speech (POS) теггинг

  • Присваивает каждому слову в предложении его POS-тег с использованием метода совместимого с ICTCLAS
  • Пример использования: >>> from jieba import posseg as pseg >>> слова = pseg.cut("我爱北京天安门") >>> for w in слова: ... print(w.word, w.flag) ... 我 r 爱 v 北京 ns 天安门 ns

Функционал: Метод 5) параллельное токенизация

  • Принцип работы: разделение целевого текста по строкам, распределение каждой строки между несколькими процессами Python для параллельной токенизации, а затем объединение результатов для увеличения скорости токенизации

  • Основан на модуле multiprocessing Python, временно не поддерживающем Windows

  • Пример использования:

    • jieba.enable_parallel(4) # Включение режима параллельной токенизации, параметр — количество параллельных процессов
    • jieba.disable_parallel() # Выключение режима параллельной токенизации* Пример: https://github.com/fxsjy/jieba/blob/master/test/parallel/test_file.py
  • Экспериментальные результаты: на компьютере Linux с четырьмя ядрами и частотой 3.4 ГГц, при точной токенизации полного романа "Жень Юн", достигнута скорость 1 МБ/с, что составляет 3.3 раза быстрее однопоточной версии.

Другие словари

  1. Словарь с небольшим объемом памяти https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small

  2. Лучший словарь для токенизации традиционных символов https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big

Скачайте нужный вам словарь и замените jieba/dict.txt или используйте jieba.set_dictionary('data/dict.txt.big')

Изменение механизма инициализации модуля: ленивая загрузка (начиная с версии 0.28)

jieba использует ленивую загрузку, поэтому "import jieba" не вызывает сразу загрузку словарей; они загружаются только тогда, когда это требуется. Если вы хотите инициализировать jieba вручную, вы можете сделать это самостоятельно.

import jieba
jieba.initialize()  # Ручная инициализация (необязательно)

В версиях до 0.28 нельзя было указывать путь к основному словарю. Благодаря механизму ленивой загрузки теперь можно менять путь к основному словарю:

jieba.set_dictionary('data/dict.txt.big')

Пример: https://github.com/fxsjy/jieba/blob/master/test/test_change_dictpath.pyСкорость токенизации

  • Полный режим: 1,5 МБ/секунду
  • По умолчанию: 400 КБ/секунду
  • Тестовая среда: Intel(R) Core(TM) i7-2600 CPU @ 3,4 ГГц; 《Война и мир》.txt

Часто задаваемые вопросы

  1. Как генерируются данные модели? https://github.com/fxsjy/jieba/issues/72) Какова лицензия этого пакета? https://github.com/fxsjy/jieba/issues/2

Дополнительные вопросы доступны здесь: https://github.com/fxsjy/jieba/issues?sort=updated&state=closed

Журнал изменений

https://github.com/fxsjy/jieba/blob/master/Changelog

Jieba

"Jieba" (китайское слово "заикание") — модуль сегментации китайского текста: создан для того, чтобы быть лучшим модулем сегментации китайских слов на Python.

Особенности

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

Использование

  • Полная автоматическая установка: easy_install jieba или pip install jieba;
  • Полуавтоматическая установка: скачайте http://pypi.python.org/pypi/jieba/, после распаковки выполните python setup.py install;
  • Ручная установка: поместите директорию jieba в текущую директорию или в директорию python site-packages;
  • Импортировать используя import jieba, что будет строить дерево Trie только при первом импорте (что занимает несколько секунд).Алгоритм ========
  • Основан на структуре дерева Trie для эффективного просмотра графа слов; предложения, составленные китайскими символами, образуют ориентированный ациклический граф (DAG);
  • Использует поиск с памятью для вычисления максимального вероятностного пути, чтобы определить максимальные точки контакта на основе частоты сочетаемости слов;
  • Для неизвестных слов используется модель HMM на основе позиций символов, используя алгоритм Витебского;

Функция 1): cut

  • Метод jieba.cut принимает два входных параметра: 1) первый параметр — это строка, требующая сегментации, а 2) второй параметр — cut_all, параметр, используемый для контроля над типом сегментации;
  • jieba.cut возвращает структуру итерационного генератора, где можно использовать цикл for для получения сегментации слов (в unicode), или list(jieba.cut(...)) для создания списка;
  • jieba.cut_for_search принимает один параметр: строку, требующую сегментации, и разрезает предложение на короткие слова;

Пример кода: сегментация

# encoding=utf-8
import jieba

seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print "Полный режим:", "/".join(seg_list)  # Полный режим

seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print "По умолчанию:", "/".join(seg_list)  # По умолчанию
seg_list = jieba.cut("он пришёл в Нетецзи Ханьсяньское здание")
print ", ".join(seg_list)
```seg_list = jieba.cut_for_search("Сяoming окончил магистратуру Китайской академии наук Институт вычислительной техники, затем продолжил обучение в университете Киото, Япония")  # режим поисковой системы
print ", ".join(seg_list)

Выход:

	[Полный режим]: я/ пришёл/ в/ Пекин/ университет/ университет_Пекина/ университетская_корпорация/ корпорация

	[Точный режим]: я/ пришёл/ в/ университет_Пекина

	[Распознавание неизвестных слов]: он, пришёл, в, Нетецзи, Ханьсяньское, здание   (в данном случае "Ханьсяньское" отсутствует в словаре, но распознано алгоритмом Витебского)

	[Режим поисковой системы]: сяoming, магистратура, окончил, китайская, академия, наук, китайская_академия_наук, институт, вычислительная, техника, затем, университет, киото, япония, университет_киото, обучение

Функция 2): Добавление пользовательского словаря
==========

* Разработчики могут указывать свой собственный пользовательский словарь для включения в словарь jieba. Jieba имеет возможность распознавания новых слов, но добавление своих собственных новых слов может обеспечить более высокий процент правильной сегментации.
* Использование: `jieba.load_userdict(file_name) # file_name — это путь к пользовательскому словарю`
* Формат словаря такой же, как и у `analyse/idf.txt`: одно слово на строку; каждая строка разделена на две части, первая  само слово, вторая  частота слова, разделённые пробелом
* Пример:		облачная_вычислительная_технология 5
		Ли_Сяофу 2
		Центр_Инноваций 3

		до_загрузки_словаря: Ли_Сяофу / является / Центр / Инноваций / директором / также / является / облачная_вычислительная_технология / область / эксперта /

		после_загрузки_словаря: Ли_Сяофу / является / Центр_Инноваций / директором / также / является / облачная_вычислительная_технология / область / эксперта /

Функция 3): Выделение ключевых слов
================

* `jieba.analyse.extract_tags(sentence, topK)` # требуется импорт jieba.analyse
* `sentence`: текст для анализа
* `topK`: чтобы вернуть несколько самых больших ключевых слов по весу TF/IDF, значение по умолчанию равно 20

Пример кода (выделение ключевых слов):

	https://github.com/fxsjy/jieba/blob/master/test/extract_tags.py

Использование других словарей
========

Можно предоставить Jieba собственный пользовательский словарь, а также есть два словаря, доступных для загрузки:

1. Можно использовать меньший словарь для снижения потребления памяти:
https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small

2. Также есть большой файл, который лучше поддерживает традиционные знаки (繁體):
https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big

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

В любом случае, сначала скачайте нужный вам файл, а затем вызовите `jieba.set_dictionary('data/dict.txt.big')` или просто замените существующий `dict.txt`.Инициализация
========

По умолчанию Jieba использует ленивую загрузку, чтобы создавать префиксное дерево только при необходимости. Это занимает от 1 до 3 секунд один раз, после чего инициализация больше не выполняется. Если вы хотите инициализировать Jieba вручную, вы можете вызвать:

```python
import jieba
jieba.initialize()  # (необязательно)

Вы также можете указать словарь (поддерживается начиная с версии 0.28):

jieba.set_dictionary('data/dict.txt.big')

Скорость сегментации

  • 1.5 МБ / Секунду в полном режиме
  • 400 КБ / Секунду в режиме по умолчанию
  • Окружение тестирования: Intel(R) Core(TM) i7-2600 CPU @ 3.4 ГГц; 《Обложка города》.txt

Онлайн демо

http://jiebademo.ap01.aws.af.cm/

(Поддерживается Appfog)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Цзебянь — лучший компонент для токенизации текста на Python. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/fxsjy-jieba.git
git@api.gitlife.ru:oschina-mirror/fxsjy-jieba.git
oschina-mirror
fxsjy-jieba
fxsjy-jieba
master