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

OSCHINA-MIRROR/lionsoul-jcseg

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CHANGES.md 37 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 08.03.2025 17:22 acfcc76

История изменений версий Jcseg

Список задач:

  1. Автоматическая классификация текста
  2. Модели для извлечения схем знаний
  3. Анализ тональности

Jcseg 2.5.0:

  1. Формат словарной записи был скорректирован до следующего вида: "слово/коллекция частей речи/произношение/коллекция сущностей/собственные параметры" — завершено
  2. Решение Lucene, Solr, Elasticsearch для поиска синонимов было объединено с решением Jcseg для синонимов — завершено
  3. Восстановлен баг с выделением синонимов и производных слов (например, преобразование китайских цифр в арабские) в Lucene и его расширении Elasticsearch, Solr — завершено
  4. Восстановлен баг с неправильной позицией при распознавании некоторых сущностей типа "XX" в режиме NLP — завершено
  5. Восстановлен баг с автозагрузкой словаря в плагине Elasticsearch — завершено
  6. Добавлена автоматическая передача части речи для всех режимов разбиения — завершено
  7. Поддержана Elasticsearch 7.2.0 и Lucene, Solr 8.0.0 — завершено
  8. Обновлен Jetty до версии 9.4.18.v20190429 в jcseg-server — завершено
  9. Небольшие улучшения словаря — завершено### Jcseg 2.3.0
  10. Устранена проблема отсутствия пробела между временными сущностями в режиме NLP, например, "2017 год, первый день весны, третий день" должен быть представлен как "2017 год, первый день весны, третий день". - завершено
  11. Устранена проблема повторного вывода результатов поиска - завершено
  12. Устранена проблема потери эффекта пользовательского определенного размера при создании сводки - завершено
  13. Восстановлена проблема непереопределенного token.offset для английских синонимов - завершено
  14. Восстановлена проблема неправильного приоритета разделения временных сущностей типа "май" в режиме NLP - завершено
  15. Восстановлена проблема поддержки offset для однострочных полей с несколькими значениями в Lucene, например, Array поля в Elasticsearch - завершено
  16. Jcseg-server теперь упакован как полноценный проект со всеми необходимыми конфигурационными файлами для JVM - завершено

Jcseg 2.2.0:

  1. Добавлена возможность контроля гранулярности в режиме SearchSeg, что позволяет выполнять разбиение на отдельные символы, например: "人民币" будет разделено как "人, 民, 币, 人民, 人民币".
  2. Объединённое решение для синонимов: синонимы теперь управляются отдельно, между ними автоматически создаются взаимные ссылки, а также поддерживаются операции добавления и автоматического объединения.
  3. Поддержка нескольких сущностей для одного термина: теперь можно определять несколько сущностей для каждого термина, IWord#Entity становится массивом.Оптимизация разбиения NLP, исправление ошибок при распознавании сущностей datetime и time, а также других багов.
  4. Улучшение словаря```
    Обратите внимание на синонимы: Синонимы имеют следующий конкретный формат: vendors/lexicons/lex-synonyms.lex Добавьте CJK_SYN в первую строку словаря, чтобы определить его как словарь синонимов; можно создать несколько таких словарей.

Основной формат представлен ниже: Корневое слово, синоним1[/(опциональное) произношение], синоним2[/(опциональное) произношение], ... синонимn[/(опциональное) произношение]

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

Требования:

  1. Первое слово должно быть корневым, это слово должно уже существовать в словаре CJK_WORD.
  2. Другие синонимы могут отсутствовать, JCSEG автоматически добавит их в словарь и они будут взаимно ссылаться друг на друга.
  3. Синонимы наследуют часть слова и определение объекта от корневого слова, а также произношение этого слова (если оно существует); также можно указать произношение самостоятельно после каждого синонима.
### jcseg-2.1.1: (текущая версия)1. Улучшена реализация JcsegTokenizer: метод `clearAttributes` вызывается в методе `reset`, удалены вызовы `end()`, что позволяет удобнее использовать `TokenStream` вне его контекста для выполнения различных статистических запросов.
2. Исправлен баг в методе `Word#toString`, связанный со специальными символами в JSON-строках; добавлены предварительные обработки `" "` и `\`. Отчет предоставлен <https://github.com/luohuan02>.
3. Исправлен баг, связанный с выделением пустой строки между `""` при отсутствии содержимого внутри этих символов. Отчет предоставлен <http://git.oschina.net/fige>.
4. В режиме NLP-разбиения добавлена стандартная распознаваемость datetime-объектов. Например: 2017/03/07, 2017-03-07.
5. В режиме NLP-разбиения добавлена универсальная распознаваемость китайских datetime-объектов. Например: 2017年3月7日, 明天下午4点半, 下周二上午8点45分等, 明天凌晨2点一刻.
6. В режиме NLP-разбиения добавлена распознаваемость смешанных datetime-объектов. Например: 明天下午15:45, 下周二10:30, 2017-03-15下午三点半, 2017/12/24下午15:45.
7. Улучшено возможное конкурентное использование объекта словаря типа `IWord`; в настоящее время это особенно важно при автоматической загрузке обновлений словаря, когда происходит вызов `IWord.clone()`. Обновление и разбиение конкурируют за доступ к этим объектам.Пример тестового демонстрационного примера для распознавания datetime-объектов (различные части datetime разделены пробелами для удобства вторичного разбиения):

```shell
jcseg~tokenizer:NLP>> 2017年3月2日
Результат токенизации:
2017年 3月 2日/t/datetime.ymd
Завершено, всего:9, токенов:1, за 0.00105 секунды
jcseg~tokenizer:NLP>> 2017年03月07日
Результат токенизации:
2017年 03月 07日/t/datetime.ymd
Завершено, всего:11, токенов:1, за 0.00000 секунд
jcseg~tokenizer:NLP>> 明天下午4点半
Результат токенизации:
завтра вечер 4点半/t/datetime.dahi
Завершено, всего:7, токенов:1, за 0.00000 секунд
jcseg~tokenizer:NLP>> 下周二上午8点45分
Результат токенизации:
через неделю во вторник утром 8点 45分/t/datetime.dahi
Завершено, всего:10, токенов:1, за 0.00000 секунд
jcseg~tokenizer:NLP>> 2017年03月08日下午15点半去见一个投资人
Результат токенизации:
2017年 03月 08日 вечер 15点半/t/datetime.ymdahi идти/q/null встретиться/n/null один/q/null инвестор/n/null
Завершено, всего:24, токенов:5, за 0.00000 секунд
jcseg~tokenizer:NLP>> 明天凌晨2点一刻产品升级开始
Результат токенизации:
завтра рано утром 2点一刻/t/datetime.dahi продукт/n/null обновление/vn/null начать/n/null
Завершено, всего:14, токенов:4, за 0.00000 секунд
jcseg~tokenizer:NLP>> 明天下午15:45
Результат токенизации:
завтра вечер 15点 45分/t/datetime.dahi
Завершено, всего:9, токенов:1, за 0.00000 секунд
jcseg~tokenizer:NLP>> 2017/03/15下午16:45:36开始生日party
Результат токенизации:
2017/03/15 вечер 16点 45分 36秒/t/datetime.ymdahis начать/n/null день рождения/n-null party/en/null
Завершено, всего:29, токенов:4, за 0.00210 секунд

jcseg-2.1.0:01. Категории словарей частей речи объединены в основные категории (китайско-английские сочетания, английско-китайские сочетания, английская пунктуация, английский словарь), что облегчает обслуживание и подготовку к плану NLP Jcseg.

  1. Улучшена алгоритмическая логика распознавания англо-китайских сочетаний; ранее, кроме слов типа "x-ray", все остальные смешанные слова были слишком сложно поддерживать, теперь они объединены в lex-mixed. lex или новый словарь.
  2. Введен режим разделения по разделителям, который позволяет непосредственно разделять входной поток по одиночному разделителю (по умолчанию — пробел) для специальных сценариев использования.
  3. В словарях добавлены метки идентификации терминов, что облегчает применение для идентификации категорий терминов после их выделения, например: время, место (более гибкий подход, чем анализ части речи и идентификация сущностей, может поддерживать n типов пользовательских сущностей).
  4. Улучшено тестирование загрузки словарей (проверка соответствия различных терминов config.max_length).
  5. Введено ограничение максимальной длины английского термина до 64 символов, чтобы предотвратить выход за пределы памяти при вводе длинных без пробела английских строк. 07.Введен режим NLPSeg для анализа NLP, наследующий сложный режим и модифицированный для комбинированного представления чисел, единиц и других терминов, а также добавлена автоматическая идентификация электронной почты, мобильных номеров континента, URL, географических мест, людей и валют.
  6. Улучшена обработка данных API в модуле jcseg-server, упрощена форма ответа API.
  7. Оптимизация словарей, объединив все географические термины ip2region в lex-place. Lex как единый словарь географических терминов.
  8. Исправление ошибки в DictionaryFactory#createSingletonDictionary, когда параметр loadDic был недействительным.
  9. Добавлена поддержка последней версии Lucene-6.3.0.
  10. Добавлена поддержка последней версии Solr-6.3.0.
  11. Добавлена поддержка последней версии Elasticsearch-5.1.1.Руководство по обновлению:
    1. Если ранее создавались пользовательские словари смешанных терминов, первая строка этих словарей должна быть переопределена с категорией CJK_WORD, чтобы избежать несовместимости и проблем с распознаванием смешанных терминов.
    1. Если ранее использовалась пользовательская конфигурация файла словаря, начиная с версии 2.1.0, имя файла должно быть закодировано с префиксом "lex-" и суффиксом ".lex"; конфигурационные параметры в jcseg.properties стали недействительными.

jcseg-2.0.0:

  1. Добавлена документация по разработке пользовательских словарей.
  2. Улучшена документация по ключевым словам, ключевым фразам, ключевым предложениям и автоматическому суммаризированию.
  3. Добавлены указания по правам доступа для автоматической загрузки словарей lex-autoload.todo.
  4. В DictionaryFactory добавлены два новых интерфейса для удобства разработки пользовательских словарей.```java createDefaultDictionary(JcsegTaskConfig config, boolean sync, boolean loadDic); createSingletonDictionary(JcsegTaskConfig config, boolean loadDic); /*
  • loadDic используется для контроля того, автоматически ли фабрика будет проверять наличие словарей в конфигурации и загружать их; это совместимо с старыми версиями, где автоматическая загрузка была включена по умолчанию. Это позволяет пользователям самостоятельно загружать свои словари. */ ```5. Устранена проблема возможной "загрязнённости" поля IWord#position при параллельном выполнении, что могло привести к ошибкам выделения текста Lucene.
  1. Оптимизирована повторная сегментация сложных английских слов, чтобы гарантировать, что начальное смещение последнего слова было больше или равно начальному смещению предыдущего слова.

jcseg-1.9.9:

1. Загружено в центральный Maven-репозиторий, зависимости указаны ниже:
  • 1), jcseg (все модули):
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg</artifactId>
    <version>1.9.9</version>
</dependency>
  • 2), jcseg-core:
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-core</artifactId>
    <version>1.9.9</version>
</dependency>
  • 3), jcseg-analyzer (Lucene или Solr):
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-analyzer</artifactId>
    <version>1.9.9</version>
</dependency>
  • 4), jcseg-elasticsearch:
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-elasticsearch</artifactId>
    <version>1.9.9</version>
</dependency>
  • 5), jcseg-server (независимый сервер приложений):
<dependency>
    <groupId>org.lionsoul</groupId>
    <artifactId>jcseg-server</artifactId>
    <version>1.9.9</version>
</dependency>
2. Изменены конструкторы JcsegTaskConfig следующим образом:
JcsegTaskConfig()                   //не выполняет никакой внутренней инициализации
JcsegTaskConfig(boolean autoLoad)   //указывает, следует ли автоматически искать конфигурационные файлы
JcsegTaskConfig(String proFile)     //инициализирует конфигурацию указанным файлом
JcsegTaskConfig(InputStream is)     //инициализирует конфигурацию указанным потоком ввода
```##### 3. Теперь в JcsegTaskConfig или jcseg.properties можно установить путь к словарю как null.
##### 4. Класс ADictionary базового словаря расширен методами для загрузки словарей:

```java
load(File file)                 //загружает все записи из файла File
load(String file)               //загружает все записи из указанного пути к файлу
load(InputStream is)            //загружает все записи из входящего потока
loadDirectory(String lexDir)    //загружает все записи из всех файлов в указанной директории словарей
loadClassPath()                 //загружает все записи из classpath
5. Артефакт jcseg-core-{версия}.jar теперь включает автоматически файл jcseg.properties и все словари, что позволяет запустить приложение, имея только файл jcseg-core-{версия}.jar, без необходимости использования каких-либо зависимостей. Конфигурационный файл jcseg.properties может быть сохранён в директории jcseg-core-{версия}.jar для настройки всех параметров, таких как максимальная длина сегмента, путь к пользовательским словарям и так далее.
6. Оптимизация словарей, добавление новых слов

jcseg-1.9.8:1. Добавлен режим разбиения SEARCH_MODE для более детального разбиения, предназначенный для поиска.

  1. Добавлена функция DictionaryFactory#createSingletonDictionary для создания единичного экземпляра словаря.
  2. Переопределено создание словарей для анализаторов analyzer и elasticsearch на основе единичного экземпляра, что позволяет экономить память и одновременно решает проблему неполной глобальной обновляемости словарей при использовании множества экземпляров.
  3. Поддерживается Lucene версий 6.0 и выше, Elasticsearch версий 2.3.1 и выше.
  4. Добавлены следующие конструкторы для JcsegAnalyzer5X для удобства сборки и выпуска приложений на базе Lucene:```java JcsegAnalyzer5X(int mode, String proFile); JcsegAnalyzer5X(int mode, JcsegTaskConfig config); JcsegAnalyzer5X(int mode, JcsegTaskConfig config, ADictionary dic);

6. Стандартизация формата кода, например: использование четырёх пробелов вместо табуляции, переход строки перед фигурными скобками и так далее.
7. Оптимизация словарей (удаление некоторых бесполезных слов, улучшение определения частей речи для некоторых слов).
8. Устранение ошибки имени jcseg-server.properties#jcseg_global_setting, заменено на: jcseg_global_config.
9. Устранение ошибки установки JcsegServer#http_config и исправление опечатки TokenizerController#pos.

### jcseg-1.9.7:

1. Оптимизация словарей: добавление новых слов, улучшение определения частей речи.
2. Реализован RESTful API для модуля jcseg-server.
3. Выделение ключевых слов с помощью алгоритма TextRank для статьи.
4. Выделение ключевых фраз с помощью алгоритма TextRank.
5. Выделение ключевых предложений/резюме с помощью алгоритма TextRank.
6. Добавлены тестовые случаи для выделения ключевых слов/фраз/предложений/резюме в тестовой программе для терминала.

### jcseg-1.9.6:

1. Исправление ошибки lazyInitRace для фильтра mmseg.
2. Исправление проблемы высветления синонимов и латинских букв.
3. Добавление возврата положения и исправление части ошибок для режима detect.
4. Заполнение частями речей для большинства часто используемых слов.
5. Добавлена поддержка последних версий Lucene (5.1.0), Solr (5.1.0), Elasticsearch (1.5.2).
6. Исправление ошибки autoload для нескольких каталогов словарей.### jcseg-1.9.5:

1. Исправление ошибки добавления синонимов для некоторых англо-китайских слов.
2. Добавлен модуль jcseg-elasticsearch — плагин для разбиения Elasticsearch.
3. Исправление ошибки смещения для некоторых случаев разбиения слов.
4. Изменение поддержки Solr-4.9.

### jcseg-1.9.4:

1. Улучшение распознавания смешанных китайско-английских слов, теперь можно распознавать больше случаев, например: 高3.
2. Введение IHashQueue для замены исходного ILinkedList, что улучшает производительность пула слов и увеличивает скорость сегментации.
3. Изменение org.lionsoul.jcseg.util.STConverter для включения более полного списка эквивалентов упрощённых и традиционных символов.
4. Исправление проблемы преобразования китайских цифр в арабские цифры, когда некоторые комбинации были бы неверно отфильтрованы (<http://code.google.com/p/jcseg/issues/detail?id=22>).
5. Исправление ошибки при наличии пробелов в пути к словарю: JAR_HOME = java.net.URLDecoder.decode("", "utf-8").
6. Исправление бага при преобразовании китайских цифр в арабские, когда, например, 二零一四年 был бы неправильно преобразован в 1914 год.
7. Добавлен режим проверки сегментации (только те слова, которые уже есть в словаре, автоматическая корректировка регистра и полного/укороченного варианта).

### jcseg-1.9.3:1. Переход на управление Maven, также поддерживаются исходные сборки Ant.
2. Оптимизация повторной сегментации сложных английских слов, что позволяет избежать лишних вызовов (не влияет на использование).
3. Изменение порядка вывода повторно сегментированных английских слов и исходных слов, так как вторичная сегментация слов должна быть выведена раньше благодаря функции синонимов.
4. Исправление бага в проверке длины остановочных слов при загрузке словарей.
5. Исправление памяти-потребляемого бага PushbackReader.

### jcseg-1.9.2:1. Поддержка загрузки нескольких каталогов словарей через конфигурационный файл, разделённых ';'.
2. Автоматическая перезагрузка регулярных выражений для поддержки. --не завершена
3. Исправление бага при распознавании китайских дробей.
4. Исправление бага при невозможности преобразования некоторых китайских дробей в арабские.
5. Исправление бага в инструментах объединения словарей.
6. Дружественное сообщение об ошибке при загрузке словарей.
7. Повторная сегментация сложных числовых и английских слов, например: `QQ2013`, будет сегментировано как `qq2013`, `qq`, `2013`.
8. Автоматическое сохранение знаков препинания перемещено в конфигурационный файл `jcseg.properties` для удобства изменения и удаления запятой, `^` и других.

### jcseg-1.9.1:1. Оптимизация метода IStringBuffer#resizeTo(), используя System.arraycopy вместо циклического копирования элементов.
2. Добавление класса util.dic.STConverter для взаимного преобразования упрощённых и традиционных строк.
3. Добавление класса util.dic.DicConverter для управления взаимным преобразованием словарей JCSEG между упрощёнными и традиционными версиями.
4. Добавление класса util.dic.DicMerge для объединения упрощённых и традиционных словарей JCSEG для создания словаря с обоими вариантами.
5. Преобразование текущего упрощённого словаря JCSEG в традиционный словарь (подходит для сегментации традиционных символов).
6. Объединение упрощённого и традиционного словарей, чтобы получить словарь с обоими вариантами (универсальный, но потребляет больше памяти).
7. Исправление ошибки в методе ASegment#nextBasicLatin(), где комбинация "цифр + пробела + единицы" была бы неверно обработана без учёта пробела.### jcseg-1.9.0:1. Устранена проблема с распознаванием "дробных значений + единицы измерения". Изменено поведение метода ASegment#isDigit().
2. Ограничение по длине при загрузке словарей (слова длиной больше max_length отсеиваются).
3. Изменено распознавание слов смешенного английско-китайского состава (теперь поддерживаются любые сочетания английских и китайских слов):

Англо-китайское: Например: бэйчжоу, Англо-китайско-английское: амэрика1, Англо-китайско-китайско-английское: адоуламэн, Китайско-английское: караоке, Китайско-английско-английское: адзуламэн, Китайско-английско-английско-китайское: зуньюньамэрика

4. Изменены правила объединения единиц измерения, теперь поддерживаются более широкие незнакомые китайским символам единицы, такие как: ℃, ℉.
5. Для неопознанных символов предоставлен выбор между сохранением или фильтрацией.
6. Добавлены английские синонимы (расширен словарь lex-en.lex).

### jcseg-1.8.9:1. Сохранение английских полутоновых и полноценных знаков препинания и CJK знаков при делении на слова (может быть отфильтровано через список стоп-слов, по умолчанию все они отсеиваются).
2. Обработка частей речи (необходимо завершить маркировку частей речи в словарях).
3. Восстановлено исправление ошибки IStringBuffer#deleteCharAt.
4. Восстановлено исправление ошибки распознавания слов, состоящих из английских букв и знаков препинания (в некоторых случаях не распознается).
5. Изменено поведение загрузки словарей, чтобы предотвратить повторную загрузку синонимов и частей речи при перезагрузке словарей.
6. Базовые типы данных хранятся с использованием IntArrayList вместо ArrayList, что снижает количество операций разбора объектов.
7. По совету пользователей доработана документация по разработке.### jcseg-1.8.8:

1. Управление пользовательской конфигурацией JcsegTaskConfig через файл jcseg.properties (удобство управления для сложных проектов).
2. Изменён интерфейс ADictionary, позволяющий загружать словари по отдельности, что удобно для вторичной разработки или автоматической загрузки обновлённых словарей; словари разделены на синхронные и асинхронные.
3. Автоматическая загрузка обновлённых словарей.
4. Упорядочивание файла конфигурации jcseg.properties.
5. Распознавание слов смешанного английско-китайского состава (например: караоке).

### jcseg-1.8.7:

1. Изменение внутренней структуры jcseg (лучшая поддержка многопоточной работы).
> (1). Добавлен JcsegTaskConfig для описания параметров конфигурации Jcseg (предоставляет метод CloneFromProperties для клонирования конфигураций из jcseg.properties).
> (2). Изменено использование ASegment для задач Jcseg (генерируется конкретный алгоритм и режим с помощью JcsegFactory).
2. Добавлена возможность выделения ключевых слов из текста (не выполнено).


### jcseg-1.8.6:1. Устранено проблему с некоторыми терминами (некоторые словари могут попасть в процедуру распознавания китайских чисел; по умолчанию jcseg не имеет синонимов для китайских чисел) не добавляемых в качестве синонимов.
2. Добавлена функциональность фильтрации стоп-слов для всех категорий словарей, ранее версия поддерживала только фильтрацию стоп-слов для CJK терминов.
3. Добавлено переключение между китайским и арабским представлением дробей.
4. Добавлен интерфейс для разделения текста с помощью Solr.
5. Добавлен файл README.txt.
6. Добавлен файл LICENSE.txt.
7. Удалены ограничения на длину загружаемых словарей, таких как список stop-слов.### jcseg-1.8.3:

1. Исправлена проблема с идентификацией имени, вызванная выбросом `NullPointerException` при отсутствии соответствующего слова в `lex-chars.lex`.
2. Добавлено переключение между китайским и арабским представлением чисел; по умолчанию включено.
3. Проблема с поиском файла `jcseg.properties` решена следующими способами:

(1) Поиск в корневой директории JAR, если не найдено — попытка (2) (2) Поиск в classpath, если не найдено — попытка (3) (3) Поиск в домашней директории пользователя. Если не найдено, выбрасывается исключение с указанием метода решения проблемы.


### jcseg-1.8.2:

1. При загрузке словарей исключены синонимы длиннее `Config.MAX_LENGTH`.
2. Добавлена возможность фильтрации английских stop-слов (добавлено несколько сотен английских stop-слов).
3. Добавлена поддержка версий Lucene 4.x через `JcsegAnalyzer4X`.

Опубликовать ( 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