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

OSCHINA-MIRROR/lionsoul-jcseg

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

Jcseg что такое?

Jcseg — это легковесный китайский сегментатор, основанный на алгоритме mmseg, который также включает в себя такие функции как извлечение ключевых слов, ключевых фраз, ключевых предложений и автоматическое создание сводок статей. В Jcseg встроен веб-сервер на основе Jetty, что позволяет легко вызывать его через HTTP на различных языках программирования. Кроме того, он предоставляет интерфейсы для сегментации текста для последних версий Lucene, Solr, Elasticsearch/OpenSearch.

Файл конфигурации jcseg.properties входит в состав Jcseg и используется для быстрой настройки приложения под различные условия использования, такие как максимальная длина слова, активация распознавания китайских имён, добавление пиньиня, добавление синонимов и так далее.

Основные функции Jcseg- [x] Китайская сегментация: алгоритм MMSEG + уникальные оптимизации Jcseg, семь режимов сегментации.

  • Извлечение ключевых слов: на основе алгоритма TextRank.
  • Извлечение ключевых фраз: на основе алгоритма TextRank.
  • Извлечение ключевых предложений: на основе алгоритма TextRank.
  • Автоматическая генерация сводок: на основе алгоритма BM25+TextRank.
  • Автоматическое выделение частей речи: на основе словаря+(план статистического удаления двусмысленностей), данный метод пока не даёт очень хороших результатов, поэтому рекомендуется не использовать его там, где требуется высокое качество выделения частей речи.
  • Выделение именованных сущностей: на основе словаря+(план статистического удаления двусмысленностей), электронная почта, URL, мобильные номера континentalного Китая, географические названия, имена людей, денежные единицы, временные метки, единицы измерения длины, площади и расстояния и так далее.
  • RESTful API: встроенный сервер Jetty обеспечивает высокопроизводительный модуль, содержащий все функции в виде HTTP-интерфейсов со стандартизованным форматом JSON, что делает его удобным для прямого вызова различными клиентами.# Китайская сегментация Jcseg

Семь режимов сегментации:### Функциональные особенности разделителя слов:

  • Упрощённый режим: алгоритм FMM, подходит для ситуаций, требующих скорости.
  • Расширенный режим: четыре фильтра алгоритма MMSEG, обеспечивающие высокую степень удаления двусмысленностей, точность сегментации составляет 98,41%.
  • Режим проверки: возвращает только те слова, которые есть в словаре, что особенно полезно для некоторых типов приложений.
  • Максимальный режим: детализированная сегментация, специально предназначенная для поиска, кроме возможности распознавания китайских имён и чисел, остальные характеристики совпадают с расширенным режимом.
  • Режим разделителей: сегментация по заданным символам, по умолчанию используется пробел, применимо для специальных случаев.
  • Режим NLP: наследует от расширенного режима, но меняет способ объединения чисел и единиц измерения, а также добавляет возможность распознавания электронной почты, мобильных номеров континентального Китая, URL, имен людей, географических названий, денежных единиц и бесконечного количества других характеристик.

Функциональные особенности:

  • Поддержка пользовательских словарей. В папке lexicon можно свободно добавлять/удалять/изменять словари и содержимое словарей, а также разделение словарей на категории.
  • Поддержка загрузки нескольких директорий с лексиконами. Конфигурация lexicon.путь позволяет использовать ';' для разделения нескольких директорий со словарями.
  • Разделение словарей на китайско-простой/китайско-традиционный/микс китайско-простого и китайско-традиционного: специализированные словари для китайского простого, китайского традиционного и микса китайского простого и традиционного. Также можно использовать нижеописанные синонимы для взаимной проверки китайского простого и традиционного, Jcseg предоставляет два простых инструмента управления словарями для конвертации между китайским простым и традиционным и объединения словарей.
  • Добавление/соответствие синонимов + добавление пиньиня для китайских слов. Словарь включает слова из 'Современного китайского словаря' и cc-cedict словаря, а также использует cc-cedict для маркировки пиньиня для слов, а также 'Китайского словаря синонимов' для маркировки синонимов (ещё не завершено). Изменение конфигурации jcseg.properties позволяет добавлять пиньинь и синонимы в результаты разбиения слов.
  • Распознавание китайских чисел и дробей, например, "сто пятьдесят человек пришло, одна сороковая часть людей". И Jcseg автоматически преобразует эти числа в арабские цифры и добавляет их в результаты разбиения слов. Например: 150, 1/40.
  • Поддержка распознавания смешанных китайско-английских и английско-китайских слов (поддержка любых сочетаний при поддержании словаря).Например: B-ультрасонография, X-луч, караоке, кидук-ктв, Дораэмон A-мечта.
  • Поддержка разбиения англо-китайских слов методом mmseg для устранения двусмысленностей, например, "openarkcompiler" будет разбито как "open ark compiler", эта функция может быть отключена.
  • Лучшая поддержка латиницы, электронной почты, доменов, десятичных чисел, дробей, процентов, букв и знаков препинания (например C++, C#).
  • Поддержка сохранения знаков препинания при разбиении слов. Например: сохранение &, позволит распознавать сложные слова типа K&R.
  • Вторичное разбиение сложных английских слов: сохраняет первоначальное сочетание, одновременно избегая снижения точности поиска из-за сложного разбиения. Например: QQ2013 будет разбито как qq2013 / qq / 2013, chenxin619315@gmail.com будет разбито как chenxin619315@gmail.com / chenxin / 619315 / gmail / com.
  • Поддержка распознавания арабских цифр, десятичных чисел, китайских цифр и базовых единиц измерения, например: 2012 год, 1.75 метра, 38.6°C, пятикратное снижение цены, и Jcseg добавляет это в результаты разбиения слов как "5-кратное снижение".
  • Интеллектуальная поддержка круглых углов, приведение к нижнему регистру, приведение к верхнему регистру английских букв.
  • Распознавание специальных символов: например: Ⅰ, Ⅱ; специальные цифры: например: ①, ⑩.- [x] Поддержка выделения содержимого между парными знаками препинания: Например: лучшей Java книги "Java: Программирование 思惟", 'Imagination Cup Hacking Technology Contest', внутри ",《,‘,“,『 скобок. (начиная с версий 1.6.8).
  • Умная распознаваемость китайских и зарубежных имён. Точность распознавания китайских имён составляет более 94%. (китайские имена можно улучшить точность путём внесения правил в lex-lname, lex-dname-1, lex-dname-2), (после введения правил и частей речи достигается точность выше 98%).
  • Автоматическая фильтрация стоп-слов на китайском и английском языках (необходимо активировать эту опцию в jcseg.properties, lex-stopwords.lex — это словарь стоп-слов).
  • Автоматическое обновление словаря при наличии доступа к папке со словарями (требуются права записи на файл lex-autoload.todo в директории словарей).
  • Автоматическое определение частей речи (на основе текущего словаря).
  • Автоматическое распознавание сущностей, поддерживаются по умолчанию: электронная почта, URL, мобильные номера континентального Китая, географические названия, имена, денежные единицы; в словаре можно определять различные сущности и возвращать их при разбиении текста. # Быстрый запуск Jcseg:

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

  1. "Imagination Cup Hacking Technology Contest" переведено как "Imagination Cup Hacking Technology Contest".

  2. "lex-lname", "lex-dname-1", "lex-dname-2", "jcseg.properties", "lex-stopwords.lex", "lex-autoload.todo" остаются без изменений, поскольку являются именами файлов или конфигураций.

  3. "URL" остается без изменений, так как это аббревиатура.

  4. "Континентальный Китай" переведено правильно.

  5. "Денежные единицы" переведено правильно.

  6. "Быстрый запуск" переведено правильно.#### Тестирование в командной строке:

  7. Перейти в корневую директорию Jcseg с помощью команды cd.

  8. Выполнить сборку проекта с помощью ant all (или использовать Maven для компиляции).

  9. Запустить приложение с помощью команды java -jar jcseg-core-{версия}.jar.

  10. Вы увидите следующий интерфейс командной строки.

  11. Введите текст в поле курсора для начала тестирования (введите параметр seg_mode, чтобы переключиться между различными алгоритмами разделения).

+---------------------Jcseg китайский токенизатор слов-----------------------------+
| - @Автор chenxin<chenxin619315@gmail.com>                                          |
| - :seg_mode  : переключение на указанный режим токенизации.                      |
| - (:complex,:simple,:most,:detect,:delimiter,:NLP,:ngram)                        |
| - :keywords  : переключение на режим извлечения ключевых слов.                  |
| - :keyphrase : переключение на режим извлечения ключевых фраз.                  |
| - :sentence  : переключение на режим извлечения предложений.                    |
| - :summary   : переключение на режим извлечения сводок.                         |
| - :help      : вывод этого меню помощи.                                         |
| - :quit      : выход из программы.                                              |
+-----------------------------------------------------------------------------------+
jcseg~токенизация:complex>>

Примеры тестовых данных:

Разделение слов```

Амбивалентность и синонимы: исследование происхождения жизни, смешанные слова: сделать УЗИ для проверки здоровья, что такое сущность рентгеновского излучения, сегодня мы отправляемся в KTV "караоке" в районе Чжиду, Дора Эйч-Эн — главный герой анимационного сериала, единицы измерения и полукруглые символы: путешествие в университет началось 6 августа 2009 года, температура в городе Яньян составляет 38,6°C, то есть 101,48°F, китайские цифры/дроби: вы получаете две тридцатых, Чжоу Цинь берёт пять тридцатых, остальные двадцать три тридцатых принадлежат мне, это было до 1998 года, блюдо "манты" очень вкусное, движение 4 мая оставило после себя дух 4 мая. Ноутбуки со скидкой 50%, отправка за почтой. Распознавание имён: я Чжоу Цинь, также автор Jcseg, Жу Гэньсинь из эпохи Троецарствия был гением, давайте вместе поболеем за Лю Хян, Лу Цзи очень рад тому, что У Ла подарил ему ноутбук. Распознавание иностранных имён: время в Исландии 1 июля, актёр Том Круз, который снимается там, признал через своего пресс-секретаря, что его брак с третьей женой Кэтти Хермес (ранее были два брака с Ми-Ми Роджерс и Николь Кидман соответственно) скоро закончится. Парные знаки препинания: победителем конкурса хакерских технологий "Чангсиань" является Чжан Сань из группы 09-2BF, награда — книга по C++ и набор учебников PHP от "Чангсиань".

Перед использованием примеров тестовых данных убедитесь, что вы правильно установили и скомпилировали проект **Jcseg**.##### Разбиение на слова:

Разделение:/w

Исландия/ns время/n июль/m первое число/m ,/ находящийся/u там/s съёмка/vi Том Круз/nr А Танг Гэ/nr признался/v через/v представителя/n ,/ он/r с/o третьего/m женой/n Кейт Холмс/nr (первый/a второй/j женой/n Ми Ми Роджерс/nr Николь Кидман/nr )/ его/u брак/n закончится/d .,/ пары/vn знаки/n :/ этот/r «/ Цай Сян Бэй/nz »/ хакеры/n технологии/n конкурс/vn победитель/n является/a Telecommunications/нт 09/en -/ BF/en 2BF/en Чжан Сан/nr ,/ награда/vn C++/en программирование/gi язык/n книга/ns и/o [ Cай-ксе-нь цю-бин/nz ]/ его/u «/ PHP Tutorial/nz »/ набор/m .,/ особенный/a буквы/n :/ [ I/nz ]/ (/ II/m )/,/ английский/n английский/n цифры/n :/ Bug/en Report/en Ченсинь/en 619315/en Gmail/en Com/en Ченсинь619315@gmail.com/en Or/en Visit/en Http/en :// Code/en Google/en Com/en Code.Google.Com/en // P/en // Jcseg/en ,/ мы/r все/pl восхищаемся/v приветствуем/v любим/v наслаждаемся/v духом/n ума/n хакера/n ! / особенный/a цифры/n :/ ①/m ⑩/m ⑽/m ㈩/m . /# **Jcseg** Maven репозиторий:

* jcseg-core:

```xml
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-core</artifactId>
    <version>2.6.3</version>
</dependency>
  • jcseg-analyzer (lucene или solr):
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-analyzer</artifactId>
    <version>2.6.3</version>
</dependency>
  • jcseg-elasticsearch
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-elasticsearch</artifactId>
    <version>2.6.3</version>
</dependency>
  • jcseg-opensearch
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-opensearch</artifactId>
    <version>2.6.3</version>
</dependency>
  • jcseg-server (независимый сервер приложений)
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-server</artifactId>
    <version>2.6.3</version>
</dependency>

Jcseg интерфейс лексемизации Lucene:

  1. Включите jcseg-core-{версия}.jar и jcseg-analyzer-{версия}.jar
  2. Пример кода:
// Для версий Lucene 6.3.0 и выше
Analyzer analyzer = new JcsegAnalyzer(ISegment.COMPLEX, config, dic);

// Необязательно (для изменения конфигурации по умолчанию): Получение экземпляра конфигурации сегментатора
JcsegAnalyzer jcseg = (JcsegAnalyzer) analyzer;
SegmenterConfig config = jcseg.getConfig();
// Добавление синонимов, требуется настройка jcseg.loadsyn=1 в jcseg.properties
config.setAppendCJKSyn(true);
// Добавление пиньиня, требуется настройка jcseg.loadpinyin=1 в jcseg.properties
config.setAppendCJKPinyin();
// Больше настроек, см. org.lionsoul.jcseg.SegmenterConfig
```# **Jcseg** интерфейс лексемизации Solr:

1. Копируйте jcseg-core-{версия}.jar и jcseg-analyzer-{версия}.jar в каталог библиотек Solr.
2. Добавьте одну из следующих двух конфигураций в scheme.xml Solr:

```xml
<!-- Комплексный режим лемматизации: -->
<fieldtype name="textComplex" class="solr.TextField">
    <analyzer>
        <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="complex"/>
    </analyzer>
</fieldtype>
<!-- Простой режим лемматизации: -->
<fieldtype name="textSimple" class="solr.TextField">
    <analyzer>
        <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="simple"/>
    </analyzer>
</fieldtype>
<!-- Детекторный режим лемматизации: -->
<fieldtype name="textDetect" class="solr.TextField">
    <analyzer>
        <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="detect"/>
    </analyzer>
</fieldtype>
<!-- Поисковый режим лемматизации: -->
<fieldtype name="textSearch" class="solr.TextField">
    <analyzer>
        <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="most"/>
    </analyzer>
</fieldtype>
<!-- Режим лемматизации NLP: -->
<fieldtype name="textNLP" class="solr.TextField">
    <analyzer>
        <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="nlp"/>
    </analyzer>
</fieldtype>
<!-- Режим лемматизации с разделителем: -->
<fieldtype name="textDelimiter" class="solr.TextField">
    <analyzer>
        <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="delimiter"/>
    </analyzer>
</fieldtype>
<!-- Режим лемматизации n-gram: -->
<fieldtype name="textNGram" class="solr.TextField">
    <analyzer>
        <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="ngram"/>
    </analyzer>
</fieldtype>

Примечание:1. Если используется версия Solr-4.x, скачайте исходный код с тэга v1.9.7-release, скомпилируйте его и получите соответствующий jar. Затем замените v5x в вышеупомянутом xml на v4x. 2. Если используется версия Solr-6.3.0 или ниже, путь к пакету JcsegTokenizerFactory будет следующим: org.lionsoul.jcseg.analyzer.v5x.JcsegTokenizerFactoryДля определения типа токенизатора можно использовать любую конфигурацию, определённую в jcseg.properties. Разница заключается в том, что имя конфигурации должно иметь _ вместо .. Включите синонимы:

<fieldtype name="textComplex" class="solr.TextField">
    <analyzer>
        <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="complex" jsceg_loadsyn="1"/>
    </analyzer>
</fieldtype>

Интерфейсы Jcseg для Elasticsearch/OpenSearch

Для elasticsearch.version < 2.x (Не уверен)

  1. Скачайте последнюю версию исходного кода Jcseg.
  2. Используйте Maven или Ant для сборки проекта и получения необходимых jar-файлов (рекомендовано использование Maven, так как для Ant потребуется самостоятельная установка зависимостей).
  3. Копируйте jcseg-analyzer-{версия}.jar, jcseg-core-{версия}.jar, jcseg-elasticsearch-{версия}.jar в директорию {ES_HOME}/plugins/analysis-jcseg (создайте её самостоятельно, если она отсутствует).
  4. Создайте копию файла jcseg.properties и поместите её в директорию {ES_HOME}/config/jcseg (создайте её самостоятельно, если она отсутствует).
  5. Настройте jcseg.properties, особенно поле lexicon.path, чтобы указывать на правильную базу слов (или скопируйте папку lexicon из директории jcseg в {ES_HOME}/plugins/jcseg).
  6. Прочтите файл конфигурации config/elasticsearch.yml из проекта jcseg-elasticsearch в исходном коде и добавьте соответствующие настройки в {ES_HOME}/config/elasticsearch.yml.
  7. Настройте elasticsearch.yml или mapping для использования плагина анализа Jcseg (или укажите его в запросах).### Для elasticsearch.version >= 2.0.1. Скачайте последнюю версию исходного кода Jcseg.
  8. Используйте Maven или Ant для компиляции и сборки Jcseg в серию JAR-файлов (рекомендуется использовать Maven, а для Ant потребуется самостоятельно скачать соответствующие зависимости).
  9. Копируйте jcseg-analyzer-{версия}.jar, jcseg-core-{версия}.jar, jcseg-elasticsearch-{версия}.jar в директорию {ES_HOME}/plugins/jcseg (создайте эту директорию, если она отсутствует).
  10. Копируйте файл jcseg.properties в директорию {ES_HOME}/plugins/jcseg (создайте эту директорию, если она отсутствует).
  11. Копируйте файл jcseg-elasticsearch/plugin/plugin-descriptor.properties в директорию {ES_HOME}/plugins/jcseg (создайте эту директорию, если она отсутствует).
  12. Настройте файл jcseg.properties, особенно установите правильный путь до словаря в параметре lexicon.path (или скопируйте директорию lexicon из директории jcseg в {ES_HOME}/plugins/jcseg).
  13. Отправьтесь к конфигурационному файлу elasticsearch.yml проекта jcseg-elasticsearch в скачанном исходном коде и добавьте соответствующую конфигурацию в {ES_HOME}/config/elasticsearch.yml.
  14. Настройте elasticsearch.yml или mapping для использования плагина сегментации Jcseg (или укажите его в запросах).
elasticsearch.version >= 5.1.11. Скачайте последнюю версию исходного кода Jcseg.
  1. Используйте Maven или Ant для сборки и упаковки Jcseg, чтобы получить серию jar-файлов (рекомендуется использовать Maven, так как с использованием Ant вам потребуется самостоятельно скачать соответствующие зависимости).
  2. Копируйте jcseg-analyzer-{версия}.jar, jcseg-core-{версия}.jar, jcseg-elasticsearch-{версия}.jar в директорию {ES_HOME}/plugins/jcseg (создайте эту директорию, если она еще не существует).
  3. Копируйте файл jcseg.properties в директорию {ES_HOME}/plugins/jcseg (создайте эту директорию, если она еще не существует).
  4. Копируйте файл jcseg-elasticsearch/plugin/plugin-descriptor.properties в директорию {ES_HOME}/plugins/jcseg (создайте эту директорию, если она еще не существует).
  5. Настройте jcseg.properties, особенно установите lexicon.path для указания правильной лексики (или скопируйте папку lexicon из директории jcseg в директорию {ES_HOME}/plugins/jcseg).Для использования плагина Jcseg в маппинге или запросах:

Существуют следующие варианты анализаторов:

jcseg           : соответствует алгоритму анализа для поиска
jcseg_complex   : соответствует сложному алгоритму анализа
jcseg_simple    : соответствует простому алгоритму анализа
jcseg_detect    : соответствует алгоритму анализа для обнаружения
jcseg_most      : соответствует алгоритму анализа для максимального количества слов
jcseg_nlp       : соответствует алгоритму анализа для NLP
jcseg_delimiter : соответствует алгоритму анализа для разделителей
jcseg_ngram     : соответствует алгоритму анализа для n-грамм

Настройка конфигурации уровня индекса: Начиная с версий 2.5.0 и выше, вы можете использовать любые параметры из файла jcseg.properties для переопределения конфигураций при создании карты Elasticsearch/OpenSearch. Разница заключается в том, что имя конфигурации должно содержать "_" вместо ".", например, для настройки загрузки синонимов:

"settings": {
    "analysis": {
        "analyzer": {
            "jcseg_complex_v3": {
                "type": "jcseg_complex",
                "jcseg_maxlen": "3",
                "jcseg_loadsyn": "1"
            }
        }
    }
}
```Адрес для тестирования конфигурации:```
 http://localhost:9200/_analyze? analyzer=jcseg_most&text=сто долларов равно сколько юаней
  1. Для версии x используйте следующий метод тестирования:
curl 'http://localhost:9200/_analyze? pretty=true' -H 'Content-Type:application/json' -d'
{
    "analyzer": "jcseg_most",
    "text": "сто долларов равно сколько юаней"
}'

Вывод результата:

{
  "tokens" : [
    {
      "token" : "сто",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "долларов",
      "start_offset" : 2,
      "end_offset" : 7,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "равно",
      "start_offset" : 7,
      "end_offset" : 11,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : "сколько",
      "start_offset" : 11,
      "end_offset" : 16,
      "type" : "word",
      "position" : 3
    },
    {
      "token" : "юаней",
      "start_offset" : 16,
      "end_offset" : 21,
      "type" : "word",
      "position" : 4
    }
  ]
}
      "token" : "民",
       "start_offset" : 9,
       "end_offset" : 10,
       "type" : "слово",
       "position" : 15
     },
     {
       "token" : "币",
       "start_offset" : 10,
       "end_offset" : 11,
       "type" : "слово",
       "position" : 16
     }
   ]
 }

Также можно использовать пакет Elasticsearch, интегрированный с JCSEG: elasticsearch-jcseg, распакуйте и сразу сможете использовать.## JCSEG-разделочный сервер:

Модуль jcseg-server включает Jetty и реализует высокопроизводительный сервер, который добавляет RESTful API ко всем функциям JCSEG и стандартизирует JSON-формат вывода API. Для использования этих API достаточно вызвать HTTP-клиента.

Компиляция JCSEG:

Версии до 2.3.0:

  1. Используйте Maven для компиляции JCSEG, чтобы получить jcseg-server-{версия}.jar. Maven уже скомпилировал все зависимые JAR-файлы вместе. Если используется Ant, то зависимости должны быть загружены при запуске.
  2. Запустите сервер JCSEG:
    # В конце передайте путь к файлу конфигурации jcseg-server.properties
    java -jar jcseg-server-{версия}.jar ./jcseg-server.properties

Версии после 2.3.0:

  1. Используйте Maven для компиляции JCSEG, которая создаст полный проект в директории jcseg-server/target/jcseg-server, структура директорий следующая:
    01, config: Конфигурационная директория, где `jcseg-server.properties` управляет настройками сервера и словарей, а `jvm.options` управляет параметрами JVM, такими как выделение памяти, по умолчанию 1.5 ГБ.
    02, lib: Директория со всеми зависимыми JAR-файлами.
    03, lexicon: Директория словарей JCSEG, здесь можно менять и управлять словарями.
    04, jcseg-server: Скрипт управления запуском, доступен только для Linux, добавление параметра `-d` позволяет запускать в фоновом режиме.
  2. Запустите сервер JCSEG:
    # Скопируйте директорию `jcseg-server/target/jcseg-server` в место установки, назначьте её `$JS_DIR`.
    ```   cd $JS_DIR
    
    # При первом запуске добавьте права выполнения к `jcseg-server`.
    # Запуск одновременно
    ./jcseg-server
    
    # Запуск в фоновом режиме
    ./jcseg-server -d

Файл конфигурации jcseg-server.properties:```markdown

Конфигурационный файл сервера jcseg с использованием стандартной синтаксической конструкции JSON

{ # Конфигурация сервера jcseg "server_config": { # Порт сервера "port": 1990, # Дефолтная кодировка связи "charset": "utf-8", # Время простоя HTTP соединения в миллисекундах "http_connection_idle_timeout": 60000, # Максимальное количество потоков пула потоков Jetty "max_thread_pool_size": 200, # Время простоя потока в миллисекундах "thread_idle_timeout": 30000, # Размер буфера вывода HTTP "http_output_buffer_size": 32768, # Размер заголовка запроса "http_request_header_size": 8192, # Размер заголовка ответа "http_response_header_size": 8192 }, # Глобальные настройки для jcseg, ещё один экземпляр старого файла конфигурации jcseg.properties "jcseg_global_config": { # Максимальная длина совпадения (5-7) "jcseg_maxlen": 7, # Распознавание китайских имён # (true - открыто, false - закрыто) "jcseg_icnname": true, # Максимальная длина парной пунктуационной последовательности # Установите значение в 0 для отключения этой функции "jcseg_pptmaxlen": 7, # Максимальная длина фамилии и имени китайского человека "jcseg_cnmaxlnadron": 1, # Очистка списка запрещённых слов # (true - очистить список запрещённых слов, false - отключить эту функцию) "jcseg_clearstopword": false, # Преобразование китайских цифр в арабские цифры


Необходимо завершить последнюю строку:

```markdown
        # Преобразование китайских цифр в арабские цифры
        "jcseg_chinese_to_arabic_conversion": true
    }
}
```         # (true - включено, false - выключено)
          # Например, '\u4E09\u4E07' будет преобразовано в 3000.
         "jcseg_cnnumtoarabic": true,
          # Преобразование китайской дроби в арабскую дробь
          # @Примечание: для Lucene, Solr, Elasticsearch эта функция должна быть отключена.
         "jcseg_cnfratoarabic": false,
          # Сохранение нераспознанных слов
          # (true - сохранять нераспознанные слова, false - удалить их)
         "jcseg_keepunregword": true,
          # Вторичное деление сложных английских слов
         "jcseg_ensencondseg": true,
          # Минимальная длина вторичного простого токена
          # лучше больше чем 1
         "jcseg_stokenminlen": 2,
          # Пороговое значение для распознавания китайских имён
          # лучше не менять это значение до тех пор пока вы точно знаете что делаете
         "jcseg_nsthreshold": 1000000,
          # Пунктуация, которая будет сохранена внутри токена
          # (не в конце токена)
         "jcseg_keeppunctuations": "@#%.  &+"
     },
 ```    # Настройка экземпляра словаря.
      # Добавьте свои данные здесь с использованием стандартной JSON синтаксис
      "jcseg_dict": {
          "master": {
              "path": [
                  "{jar.dir}/лексикон"
                  # Абсолютный путь здесь
                  # "/java/JavaSE/jcseg/lexicon"
              ],
               # Загружать ли части речи слов
              "loadpos": true,
               # Загрузка пиньиня слов.
              "loadpinyin": true,
           }
       }```            # Загрузка синонимов слов.
            "loadsyn": true,

            # Загрузка сущностей слов.
            "loadentity": true,
                    
            # Автоматическая загрузка модифицированного словарного файла.
            "autoload": true,
        
            # Интервал опроса для автоматической загрузки. (в секундах)
            "polltime": 300
        }
        
        # Добавьте свои здесь
        # ,"name" : {
        #   "path": [
        #       "абсолютный путь до стандартного лексикона jcseg 1",
        #       "абсолютный путь до стандартного лексикона jcseg 2"
        #       ...
        #   ],
        #   "autoload": 0,
        #   "polltime": 300
        # }
    },
    
    # Настройки конфигурации сегментатора.
    # @Примечание: 
    # Все экземпляры конфигурации здесь расширяются от глобальных настроек выше.
    # Отсутствие действий приведёт к применению всех настроек из глобальных настроек.
    "jcseg_config": {
        "master": {
            # Расширение и переопределение глобальных настроек
            "jcseg_pptmaxlen": 0,
            "jcseg_cnfratoarabic": true,
            "jcseg_keepunregword": false
        }
        
        # Этот экземпляр используется для извлечения ключевых слов, ключевых фраз, предложений и суммаризации.
        # @Примечание: не удаляйте этот экземпляр, если вы хотите использовать jcseg как службу извлечения.
        ,"extractor": {
            "jcseg_pptmaxlen": 0,
            "jcseg_clearstopword": true,
            "jcseg_cnnumtoarabic": false,
            "jcseg_cnfratoarabic": false,
            "jcseg_keepunregword": false,
            "jcseg_ensencondseg": false
        }```markdown
# Добавьте больше своих здесь
# ,"name": {
#   ...
# }

# Настройка экземпляра jcseg tokenizer.
# Вы можете использовать этот экземпляр для вас с помощью доступа:
# http://jcseg_server_host:port/tokenizer/instance_name
# instance_name — это имя экземпляра, которое вы определяете ниже.
"jcseg_tokenizer": {
    "master": {
        # Алгоритм jcseg tokenizer, может быть:
        # 1: SIMPLE_MODE
        # 2: COMPLEX_MODE
        # 3: DETECT_MODE
        # 4: MOST_MODE
        # 5: DELIMITER_MODE
        # 6: NLP_MODE
        # 7: NGRAM_MODE
        # См. org.lionsoul.jcseg.segmenter.SegmenterConfig для получения дополнительной информации
        "algorithm": 2,

        # Имя экземпляра словаря
        # Выберите одно из ваших определений выше в области словарей
        "dict": "master",

        # Имя экземпляра конфигурации
        # Выберите одно из ваших определений выше в области конфигураций
        "config": "master"
    },

    # Этот экземпляр tokenizer используется для сервиса извлечения данных
    # Не удаляйте его, если хотите, чтобы jcseg обслуживал ваш сервис извлечения данных
    "extractor": {
        "algorithm": 2,
        "dict": "master",
        "config": "extractor"
    }
}

# Экземпляр используется только для NLP.
,"nlp" : { 
    "jcseg_ensencondseg": false,
    "jcseg_cnfratoarabic": true,
    "jcseg_cnnumtoarabic": true
}
```### RESTful API:

#### 1. Извлечение ключевых слов:
> Адрес API: http://jcseg_server_host:port/extractor/keywords?text=&number=&autoFilter=true|false

> Параметры запроса:
<pre>
    text: текст документа, передаваемого через POST или GET
    number: количество ключевых слов для извлечения
    autoFilter: автоматическое отсеивание ключевых слов с низкими баллами (true/false)
</pre>> Возвращаемое значение API:
```json
{
    // Код ошибки API, 0 — успешное выполнение, 1 — ошибка в параметрах, -1 — внутренняя ошибка
    "code": 0,
    // Данные ответа API
    "data": {
        // Массив ключевых слов
        "keywords": [],
        // Время выполнения операции
        "took": 0.001
    }
}

Дополнительные конфигурации см. в org.lionsoul.jcseg.server.controller.KeywordsController.

2. Извлечение ключевых фраз:

Адрес API: http://jcseg_server_host:port/extractor/keyphrase?text=&number=

Параметры запроса:

    text: текст документа, передаваемого через POST или GET
    number: количество ключевых фраз для извлечения

Возвращаемое значение API:

{
    "code": 0,
    "data": {
        "took": 0.0277,
        // Массив ключевых фраз
        "keyphrase": []
    }
}

Дополнительные конфигурации см. в org.lionsoul.jcseg.server.controller.KeyphraseController.

3. Извлечение ключевых предложений:

Адрес API: http://jcseg_server_host:port/extractor/sentence?text=&number=

Параметры запроса:

    text: текст документа, передаваемого через POST или GET
    number: количество ключевых предложений для извлечения

Возвращаемое значение API:

{
    "code": 0,
    "data": {
        "took": 0.0277,
        // Массив ключевых предложений
        "sentence": []
    }
}

Дополнительные конфигурации см. в org.lionsoul.jcseg.server.controller.SentenceController.

4. Извлечение аннотации статьи:

Адрес API: http://jcseg_server_host:port/extractor/summary?text=&length=

Параметры запроса:

    text: текст документа, передаваемого через POST или GET
    length: длина аннотации для извлечения
> Возвращаемое значение API:
{
    "code": 0,
    "data": {
        "took": 0.0277,
        // Аннотация статьи
        "summary": ""
    }
}

Дополнительные конфигурации см. в org.lionsoul.jcseg.server.controller.SummaryController.

5. Автоматическое разделение текста статьи:

API адрес: http://jcseg_server_host:port/tokenizer/tokenizer_instance?text=&ret_pinyin=&ret_pos=...

Параметры API:

    tokenizer_instance: имя экземпляра сегментатора, определённого в jcseg-server.properties
    text: текст статьи, полученный через POST или GET запрос
    ret_pinyin: указывает, следует ли включать пиньинь слов в результате сегментации (отменено после версии 2.0.1)
    ret_pos: указывает, следует ли включать части речи слов в результате сегментации (отменено после версии 2.0.1)

Возвращаемое значение API:

{
    "code": 0,
    "data": {
        "took": 0.00885,
        // массив объектов словарей
        "list": [
            {
                "word": "哆啦a梦",
                "position": 0,
                "length": 4,
                "pinyin": "duo la a meng",
                "pos": "nz",
                "entity": null
            }
        ]
    }
}

Дополнительные конфигурации см. в org.lionsoul.jcseg.server.controller.TokenizerController

Jcseg Расширенное использование:

1. API для сегментации китайского текста:

Справочник JavaDoc: Jcseg JavaDoc##### (1) Создание объекта конфигурации SegmenterConfig:

Поиск файла jcseg.properties:

    1. Найдите файл jcseg.properties в директории jcseg-core-{версия}.jar
    1. Если файл не найден, продолжайте поиск в classpath (по умолчанию уже включен)
    1. Если файл всё ещё не найден, продолжайте поиск в user home (если только файл jcseg.properties в classpath не удалён)

Поэтому, по умолчанию вы можете поместить файл jcseg.properties в ту же директорию, что и jcseg-core-{версия}.jar, чтобы настроить конфигурацию.

Конструктор SegmenterConfig:

SegmenterConfig();                          //Инициализация без поиска конфигурационного файла
SegmenterConfig(boolean autoLoad);          //autoLoad=true автоматически ищет конфигурационный файл для инициализации
SegmenterConfig(String proFile);            //Инициализация конфигурационного объекта из указанного конфигурационного файла
SegmenterConfig(InputStream is);            //Инициализация конфигурационного объекта из указанного входного потока

Пример кода:

//Создание объекта SegmenterConfig с использованием стандартной конфигурации, без поиска конфигурационного файла
SegmenterConfig config = new SegmenterConfig();
(2) Создание объекта ADictionary:

Конструктор ADictionary представлен ниже:

ADictionary(SegmenterConfig config, boolean sync);
//config: вышеупомянутый экземпляр SegmenterConfig
//sync: создать ли поточно-безопасный словарь, если требуется оперировать с объектом словаря во время выполнения — передайте true,
//      если в jcseg.properties autoload=1, то будет автоматически создан поточно-безопасный словарь
```Пример кода:

```java
// Jcseg предоставляет org.lionsoul.jcseg.dic.DictionaryFactory для удобства создания словарей и последующей совместимости
// Обычно можно использовать
//   DictionaryFactory#createDefaultDictionary(SegmenterConfig)
//   DictionaryFactory.createSingletonDictionary(SegmenterConfig)
// два метода для создания объекта словаря и загрузки файлов словарей; рекомендуется использовать createSingletonDictionary для создания одиночного словаря
```// config — это вышеупомянутый объект SegmenterConfig.
// Если пути к словарям в данном SegmenterConfig указаны правильно,
// ADictionary загружает все действительные словари согласно информации словарей в config;
// данный метод также решает синхронность или асинхронность словаря на основе config.isAutoload(),
// если config.isAutoload() равно true, создается синхронный словарь, иначе — асинхронный,
// config.isAutoload() соответствует lexicon.autoload в jcseg.properties;
// если config.getLexiconPath() равно null, DictionaryFactory автоматически загружает словари из classpath
// если не хотите, чтобы он автоматически загружал словари из lexicon,
// можно вызвать: DictionaryFactory.createSingletonDictionary(config, false) для создания ADictionary;
ADictionary dic = DictionaryFactory.createSingletonDictionary(config);

```## Создание асинхронного словаря ADictionary с конфигурацией по пути config.lexPath.
```java
ADictionary dic = DictionaryFactory.createDefaultDictionary(config, false);

Создание синхронного словаря ADictionary с конфигурацией по пути config.lexPath.

ADictionary dic = DictionaryFactory.createDefaultDictionary(config, true);

Создание словаря ADictionary в зависимости от значения config.isAutoload(), использует конфигурацию по пути config.lexPath по умолчанию.

ADictionary dic = DictionaryFactory.createDefaultDictionary(config, config.isAutoload());

// Указывает ADictionary на загрузку всех словарей из указанной директории. // config.getLexiconPath возвращает массив действительных путей к словарям. for (String path : config.getLexiconPath()) { dic.loadDirectory(path); }// Указывает ADictionary на загрузку словаря из указанного файла. dic.load("/java/lex-main.lex"); dic.load(new File("/java/lex-main.lex"));

// Указывает ADictionary на загрузку словаря из указанного входящего потока. dic.load(new FileInputStream("/java/lex-main.lex"));

// Прочтите ниже раздел «Если вы используете пользовательский словарь» для получения дополнительной информации.

(3). Создание экземпляра ISegment:

Основные методы интерфейса ISegment:

public IWord next();
// Возвращает следующее слово после сегментации.

Пример кода:

// На основе заданного ADictionary и SegmenterConfig создается экземпляр ISegment.

// 1. Через параметр ISegment.Type
// ISegment.COMPLEX указывает на создание объекта ComplexSeg — сложного ISegment.
// ISegment.SIMPLE указывает на создание объекта SimpleSeg — простого ISegment.
// ISegment.DETECT указывает на создание объекта DetectSeg — ISegment для детектирования.
// ISegment.SEARCH указывает на создание объекта SearchSeg — ISegment для поиска.
// ISegment.DELIMITER указывает на создание объекта DelimiterSeg — ISegment для разделителей.
// ISegment.NLP указывает на создание объекта NLPSeg — ISegment для NLP.
// ISegment.NGRAM указывает на создание объекта NGramSeg — ISegment для n-грамм.
ISegment seg = ISegment.Type.fromIndex(mode).factory.create(config, dic);
```// 2. Через вызов прямых методов создания
// ISegment.COMPLEX указывает на конструктор объекта ComplexSeg.
// ISegment.SIMPLE указывает на конструктор объекта SimpleSeg.
// ISegment.DETECT указывает на конструктор объекта DetectSeg.
// ISegment.MOST указывает на конструктор объекта ComplexSeg.
// ISegment.DELIMITER указывает на конструктор объекта DelimiterSeg.
// ISegment.NLP указывает на конструктор объекта NLPSeg.
// ISegment.NGRAM указывает на конструктор объекта NGramSeg.
ISegment seg = ISegment.COMPLEX.factory.create(config, dic);// Устанавливает текст для сегментации
String str = "Исследование происхождения жизни.";
seg.reset(new StringReader(str));

// Получение результатов сегментации
IWord word = null;
while ((word = seg.next()) != null) {
    System.out.println(word.getValue());
}

```java
// Создание экземпляра SegmenterConfig для конфигурации сегментации, автоматическое получение jcseg.properties для инициализации.
SegmenterConfig config = new SegmenterConfig(true);

Создание по умолчанию одиночного словаря реализации и загрузка словарей в соответствии с конфигурацией

ADictionary dic = DictionaryFactory.createSingletonDictionary(config);

Создание объекта ISegment на основе предоставленного ADictionary и SegmenterConfig

Для обеспечения обратной совместимости рекомендуется использовать SegmentFactory, чтобы создать объект ISegment.

ISegment seg = ISegment.COMPLEX.factory.create(config, dic);

Примечание:

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

// Устанавливаем текст для токенизации
String str = "Исследование происхождения жизни.";
seg.reset(new StringReader(str));

// Получаем результат токенизации
IWord word = null;
while ((word = seg.next()) != null) {
    System.out.println(word.getValue());
}

Как настроить использование словаря:С версии 1.9.9 Jcseg по умолчанию включает jcseg.properties и все словари в jcseg-core-{версия}.jar. Если SegmenterConfig(true) используется для создания SegmenterConfig или если метод SegmenterConfig#autoLoad() был вызван, то при отсутствии пользовательского конфигурационного файла Jcseg автоматически загружает конфигурацию из classpath. Если config.getLexiconPath() == null, то DictionaryFactory по умолчанию будет автоматически загружать словари из classpath.* 1) Настройка пути до словаря через SegmenterConfig:

// 1. По умолчанию создаем SegmenterConfig, не ищем конфигурационные файлы для инициализации
SegmenterConfig config = new SegmenterConfig();

// 2. Устанавливаем путь до пользовательского словаря
config.setLexiconPath(new String[] {
    "относительный или абсолютный путь до словаря1",
    "относительный или абсолютный путь до словаря2"
    // Добавьте больше здесь
});

// 3. Создаем словарь через конфигурацию и DictionaryFactory загружает все словари согласно указанному пути
ADictionary dic = DictionaryFactory.createSingletonDictionary(config);
    1. Ручная загрузка словаря через ADictionary:
// 1. Создаем по умолчанию SegmenterConfig, не ищем конфигурационные файлы для инициализации
SegmenterConfig config = new SegmenterConfig();
```// 2. Создаем объект ADictionary словаря
// Обратите внимание на второй параметр, который равен false, что блокирует автоматическое обнаружение путей до словарей в DictionaryFactory
ADictionary dic = DictionaryFactory.createSingletonDictionary(config, false);

```// 3. Ручное загрузка словаря
dic.load(new File("абсолютный или относительный путь до файла словаря"));              // Загружает все записи из указанного файла словаря
dic.load("абсолютный или относительный путь до файла словаря");                        // Загружает все записи из указанного файла словаря
dic.load(new FileInputStream("абсолютный или относительный путь до файла словаря"));   // Загружает все записи из указанного потока ввода InputStream
dic.loadDirectory("абсолютный или относительный путь до директории словарей");         // Загружает все записи из всех файлов словаря в указанной директории
dic.loadClassPath();                                                                 // Загружает все записи из всех файлов словаря в пути classpath (по умолчанию /lexicon)

2. API для извлечения ключевых слов с использованием Jcseg:* 1) Конструктор TextRankKeywordsExtractor:

TextRankKeywordsExtractor(ISegment seg);
//seg: объект Jcseg ISegment для токенизации
    1. Пример кода:
//1, Создание объекта Jcseg ISegment для токенизации
SegmenterConfig config = new SegmenterConfig(true);
config.setClearStopwords(true);     //Настройка фильтрации стоп-слов
config.setAppendCJKSyn(false);      //Настройка отключения добавления синонимов
config.setKeepUnregWords(false);    //Настройка удаления нераспознанных слов
ADictionary dic = DictionaryFactory.createSingletonDictionary(config);
ISegment seg = ISegment.COMPLEX.factory.create(config, dic);

//2, Создание экземпляра TextRankKeywordsExtractor для извлечения ключевых слов
TextRankKeywordsExtractor extractor = new TextRankKeywordsExtractor(seg);
extractor.setMaxIterateNum(100);        //Установка максимального количества итераций алгоритма PageRank, необязательно, можно использовать значение по умолчанию
extractor.setWindowSize(5);             //Установка размера окна для вычислений TextRank, необязательно, можно использовать значение по умолчанию
extractor.setKeywordsNum(10);           //Установка максимального количества возвращаемых ключевых слов, значение по умолчанию равно 10

//3, Получение ключевых слов из входящего потока чтения
String str = "Существующие методы токенизации могут быть разделены на три основные категории: методы токенизации на основе строкового совпадения, методы токенизации на основе понимания и методы токенизации на основе статистики.";
List<String> keywords = extractor.getKeywords(new StringReader(str));
```//4, вывод:
//"токенизация", "методы", "разделены", "понимание", "статистика", "строковое", "совпадение", "процесс", "категории", "основные"
    1. Исходный код теста: org.lionsoul.jcseg.test.KeywordsExtractorTest

### 3. API для автоматического создания суммаризации/извлечения ключевых предложений с помощью Jcseg:

* 1) Конструктор `TextRankSummaryExtractor`:

```java
TextRankSummaryExtractor(ISegment seg, SentenceSeg sentenceSeg);
//seg: объект Jcseg ISegment для токенизации
//sentenceSeg: объект Jcseg SentenceSeg для разбиения предложения
    1. Пример кода:
//1, Создание объекта Jcseg ISegment для токенизации
SegmenterConfig config = new SegmenterConfig(true);
config.setClearStopwords(true);     //Настройка фильтрации стоп-слов
config.setAppendCJKSyn(false);      //Настройка отключения добавления синонимов
config.setKeepUnregWords(false);    //Настройка удаления нераспознанных слов
ADictionary dic = DictionaryFactory.createSingletonDictionary(config);
ISegment seg = ISegment.COMPLEX.factory.create(config, dic);

//2, Создание объекта TextRankSummaryExtractor для автоматического суммирования текста
SummaryExtractor extractor = new TextRankSummaryExtractor(seg, new SentenceSeg());
``````java
//3, Получаем сумму текста длиной length символов из входящего потока Reader
String str = "Jcseg — это легковесный открытый китайский сегментатор, основанный на алгоритме mmseg. Он также включает в себя функции извлечения ключевых слов, ключевых фраз, ключевых предложений и автоматической суммаризации текста. Кроме того, он предоставляет интерфейсы сегментации для последних версий Lucene, Solr и Elasticsearch. Jcseg имеет встроенный файл конфигурации jcseg.properties для быстрой настройки и получения подходящих для различных случаев сегментационных приложений. Например: максимальная длина слова, активация распознавания китайских имён, добавление пиньиня, добавление синонимов и так далее!";
String summary = extractor.getSummary(new StringReader(str), 64);
```//4, вывод:
//Jcseg — это легковесный открытый китайский сегментатор, основанный на алгоритме mmseg. Он также включает в себя функции извлечения ключевых слов, ключевых фраз, ключевых предложений и автоматической суммариализации текста. Кроме того, он предоставляет интерфейсы сегментации для последних версий Lucene, Solr и Elasticsearch.

//-----------------------------------------------------------------
//5, Извлечение n ключевых предложений из входящего потока Reader
String str = "ваш исходный текст здесь";
extractor.setSentenceNum(6);        //Устанавливаем количество возвращаемых ключевых предложений
List<String> keySentences = extractor.getKeySentence(new StringReader(str)); //2, Создаем экземпляр TextRankKeyphraseExtractor для извлечения ключевых фраз
TextRankKeyphraseExtractor extractor = new TextRankKeyphraseExtractor(seg);
extractor.setMaxIterateNum(100);        //Устанавливаем максимальное количество итераций алгоритма PageRank, необязательно, можно использовать значение по умолчанию
extractor.setWindowSize(5);             //Устанавливаем размер окна для textRank, необязательно, можно использовать значение по умолчанию
extractor.setKeywordsNum(15);           //Устанавливаем максимальное количество возвращаемых ключевых слов, по умолчанию равно 10
extractor.setMaxWordsNum(4);            //Устанавливаем максимальную длину ключевой фразы, по умолчанию равно 5

## Связанные приложения

### 1, Сопоставление частей речи Jcseg:Например: существительные (n), временные слова (t), географические названия (s), направления (f), числительные (m), меры (q), отличительные слова (b), местоимения (r), глаголы (v), прилагательные (a), состояния (z), наречия (d), предлоги (p), союзы (c), вспомогательные слова (u), частицы (y), восклицания (e), имитации звуков (o), пословицы (i), привычные выражения (l), сокращения (j), начальные компоненты (h), конечные компоненты (k), лексемы (g), не являющиеся лексемами знаки (x) и знаки препинания (w). Кроме того, с точки зрения применения корпуса данных, были добавлены специализированные существительные (персональные имена nr, географические названия ns, названия организаций nt, другие специализированные существительные nz).### 2. Управление синонимами Jcseg:

* 01), Единая категоризация словаря:
С версии 2.2.0 jcseg объединил все синонимы в отдельную категорию CJK_SYN. Вы можете добавить свои определения синонимов напрямую в существующий словарь синонимов vendors/lexicons/lex-synonyms.lex или создать новый словарь и указать его как CJK_SYN в первой строке.

* 02), Единый формат синонимов:

Формат: Корневое слово, синоним1[/(необязательное произношение)], синоним2[/(необязательное произношение)], ..., синонимn[/(необязательное произношение)]

Пример: Однострочное определение: исследование, обсуждение, углубленное исследование, полировка/ян мо, разработка

Множественное определение: (если корневое слово одинаково, то все определённые синонимы относятся к одному множеству) Центральный канал 1, Центральное телевидение 1, Центральный канал 1 Центральный канал 1, Центральный канал 1, Центральное телевидение 1, Центральное телевидение 1


* 03), Формат и требования:```
1. Первое слово должно быть корневым словарным словом синонимического набора; это слово обязательно должно существовать в CJK_WORD словарной базе. Если такого слова нет, то данное определение синонимов будет проигнорировано.
2. Корневое слово используется как отличительный признак между различными наборами синонимов. Если два набора синонимов имеют одно и то же корневое слово, они будут автоматически объединены в один синонимический набор.
3. В jcseg используется org.lionsoul.jcseg.SynonymsEntry для управления синонимическими наборами; каждый объект IWord имеет свойство SynonymsEntry, которое указывает на его синонимический набор.
4. SynonymsEntry.rootWord хранит корневое слово синонимического набора; рекомендуется использовать корневое слово для всех синонимов в данном наборе.
5. Исключая корневое слово, все остальные синонимы jcseg автоматически проверяет и создаёт соответствующие объекты IWord, добавляя их в CJK_WORD словарную базу. Это значит, что остальные синонимы не обязательно должны существовать в CJK_WORD словарной базе.
6. Все остальные синонимы автоматически наследуют часть речи и определение сущностей корневого слова, а также наследуют определение произношения из CJK_WORD словарной базы (если таковое существует). Также можно отдельно определить произношение после слова, добавив "/произношение".
7.
```Все объекты IWord одного синонимического набора указывают на одно и то же SynonymsEntry, то есть синонимы автоматически взаимно ссылаются друг на друга.
```### 3. Ссылки и источники:
* 1. Оригинальная статья MMSEG алгоритма: http://technology.chtsai.org/mmseg/```### 4. Технические материалы и презентации
* 1. Пример использования: [YiCloud NLU ~ понимание смысла](https://nlu.yycloud.pro), [Поиск на Gitee ~ информационный поиск](https://search.gitee.com/?skin=rec&type=repository&q=%E5%88%86%E8%AF%8D), [Kooder ~ поиск открытого кода](https://gitee.com/koode/kooder)
* 2. Блог по NLP: WeChat публичный аккаунт: lionsoul-org(Левый дух)

> Это последняя строка, спасибо за чтение!!!

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

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

Введение

Jcseg — это облегчённый Java-инструмент для сегментации китайского языка, основанный на алгоритме mmseg. Он включает в себя извлечение ключевых слов, фраз и предложений, а также автоматическое реферирование статей. Инструмент предоставляет веб-сервер на базе Jetty, что позволяет легко осуществлять HTTP-вызовы на различных языках. Кроме того, Jc... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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