Заключение
Благодарим автора jieba — fxsjy, без его бескорыстного вклада мы бы не познакомились с инструментом сегментации слов jieba. Также благодарим команду разработчиков jieba для Java — huaban, благодаря их усилиям Java также может выполнять сегментацию слов с отличным эффектом.
Однако, поскольку huaban больше не поддерживает версию Java, я сам занялся разработкой проекта. Помимо сохранения исходной функции сегментации слов для поисковых систем (cutforindex и cutforsearch), я добавил функцию извлечения ключевых слов tfidf, и эффект реализации такой же, как у версии jieba на Python!
(Далее следует содержание, основанное на README.md версии jieba-java, с добавлением описания модуля извлечения ключевых слов tfidf.)
Введение
Поддержка режима сегментации:
Особенности:
Новая особенность: алгоритм 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());
}
}
Алгоритм (дополнительно из Википедии):
Оценка производительности:
Тестовая конфигурация машины:
Процессор: 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 )