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

OSCHINA-MIRROR/mirrors-jieba-analysis

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

Заключение

Благодарим автора jieba — fxsjy, без его бескорыстного вклада мы бы не познакомились с инструментом сегментации слов jieba. Также благодарим команду разработчиков jieba для Java — huaban, благодаря их усилиям Java также может выполнять сегментацию слов с отличным эффектом.

Однако, поскольку huaban больше не поддерживает версию Java, я сам занялся разработкой проекта. Помимо сохранения исходной функции сегментации слов для поисковых систем (cutforindex и cutforsearch), я добавил функцию извлечения ключевых слов tfidf, и эффект реализации такой же, как у версии jieba на Python!

(Далее следует содержание, основанное на README.md версии jieba-java, с добавлением описания модуля извлечения ключевых слов tfidf.)

Введение

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

  • режим поиска — для сегментации пользовательских запросов;
  • индексный режим — для сегментации документов в индексе.

Особенности:

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

Новая особенность: алгоритм tfidf для извлечения ключевых слов

public static void main(String[] args) {
    String content = "孩子上了幼儿园 安全防拐教育要做好";
    int topN = 5;
    TFIDFAnalyzer tfidfAnalyzer = new TFIDFAnalyzer();
    List<Keyword> list = tfidfAnalyzer.analyze(content, topN);
    for (Keyword word : list)
        System.out.println(word.getName() + ":" + word.getTfidfvalue() + ",");
    // 防拐:0.1992,幼儿园:0.1434,做好:0.1065,教育:0.0946,安全:0.0924
}

Как получить

Текущая стабильная версия:

<dependency>
  <groupId>com.huaban</groupId>
  <artifactId>jieba-analysis</artifactId>
  <version>1.0.2</version>
</dependency>

Текущий снимок версии:

<dependency>
  <groupId>com.huaban</groupId>
  <artifactId>jieba-analysis</artifactId>
  <version>1.0.3-SNAPSHOT</version>
</dependency>

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

Демо:

@Test
public void testDemo() {
    JiebaSegmenter segmenter = new JiebaSegmenter();
    String[] sentences =
        new String[] {"这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Python和C++。", "我不喜欢日本和服。", "雷猴回归人间。",
                      "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作", "结果婚的和尚未结过婚的"};
    for (String sentence : sentences) {
        System.out.println(segmenter.process(sentence, SegMode.INDEX).toString());
    }
}

Алгоритм (дополнительно из Википедии):

  • на основе структуры дерева trie для эффективного сканирования лексикона;
  • генерация всех возможных направленных ациклических графов DAG для сегментации слова;
  • использование алгоритма динамического программирования для вычисления наилучшего сочетания сегментации слова;
  • на основе модели HMM, использование алгоритма Viterbi для идентификации неизвестных слов.

Оценка производительности:

Тестовая конфигурация машины:

Процессор: 2 Intel(R) Pentium(R) CPU G620 @ 2.60 ГГц Память: 8 ГБ

Во время тестирования машины было запущено много приложений (Eclipse, Emacs, Chrome...), что могло повлиять на скорость тестирования.

Тестовый текст:

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

Первый результат теста: время выполнения: 12 373, скорость: 2486,986533 КБ/с, слова: 917 319,94/с Второй результат теста: время выполнения: 12 284, скорость: 2505,005241 КБ/с, слова: 923 966,10/с Третий результат теста: время выполнения: 12 336, скорость: 2494,445880 КБ/с, слова: 920 071,30/с

Вызов 20 000 раз: Первый результат теста: время выполнения: 22 237, скорость: 2767,593144 КБ/с, слова: 1 020 821,12/с Второй результат теста: время выполнения: 22 435, скорость: 2743,167762 КБ/с, слова: 1 011 811,87/с Третий результат теста: время выполнения: 22 102, скорость: 2784,497726 КБ/с, слова: 1 027 056,34/с Статистический результат: время загрузки словаря около 1,8 с, эффективность сегментации более 2 МБ в секунду, около 100 000 слов.

2 процессора Intel(R) Core(TM) i3-2100 CPU @ 3.10 ГГц 12G тестовый эффект: время выполнения: 19 597, скорость: 3140,428063 КБ/с, слова: 1 158 340,52/с время выполнения: 20 122, скорость: 3058,491639 КБ/с, слова: 1 128 118,44/с

Использование этого библиотечного проекта:

analyzer-solr @sing1ee

Лицензия:

jieba (версия Python) имеет лицензию MIT, а jieba (Java-версия) — Apache License 2.0.

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

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

Введение

Прежде всего, благодарим автора jieba fxsjy за его бескорыстный вклад. Без него мы бы не познакомились с алгоритмом сегментации слов jieba и у нас не было бы текущей версии на Java. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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