китайский
Английский
A, что означает «Oracle Bone Classical Cilling», - это инструментарий NLP, посвященный обработке древней китайской.
В настоящее время общие китайские инструменты НЛП в основном используют современные китайцы в качестве основного корпуса, и эффект обработки древних китайцев не является удовлетворительным (см. Причастие для деталей). Первоначальное намерение этого проекта состоит в том, чтобы помочь в обработке древней китайской информации, а также помочь древним китайским ученым и энтузиастам, которые заинтересованы в том, чтобы выкопать древние культурные минералы и использовать классические китайские материалы для создания «новых культурных продуктов» из «культурного наследия».
Текущая версия поддерживает пять функций: строительство лексики, автоматическая сегментация слов, аннотация частичности, классическое чтение предложений китайского предложения и пунктуация, а также больше функций.
$ pip install jiayan
$ pip install https://github.com/kpu/kenlm/archive/master.zip
Следующие модули используются из примеров.py.
Загрузите модель и декомпресс: Baidu NetDisk, Извлечение кода: p0sc
Тезаурус строительство
from jiayan import PMIEntropyLexiconConstructor
constructor = PMIEntropyLexiconConstructor()
lexicon = constructor.construct_lexicon('庄子.txt')
constructor.save(lexicon, '庄子词库.csv')
результат:
Word,Frequency,PMI,R_Entropy,L_Entropy
之,2999,80,7.944909328101839,8.279435615456894
而,2089,80,7.354575005231323,8.615211168836439
不,1941,80,7.244331150611089,6.362131306822925
...
天下,280,195.23602384978196,5.158574399464853,5.24731990592901
圣人,111,150.0620531154239,4.622606551534004,4.6853474419338585
万物,94,377.59805590304126,4.5959107835319895,4.538837960294887
天地,92,186.73504238078462,3.1492586603863617,4.894533538722486
孔子,80,176.2550051738876,4.284638190120882,2.4056390622295662
庄子,76,169.26227942514097,2.328252899085616,2.1920058354921066
仁义,58,882.3468468468468,3.501609497059026,4.96900162987599
老聃,45,2281.2228260869565,2.384853500510039,2.4331958387289765
...
Причастие
Скрытое модель Маркова Слово Слово, эффект соответствует чувству языка, рекомендуется использовать, и языковая модель jiayan.klm должна быть загружена
from jiayan import load_lm
from jiayan import CharHMMTokenizer
text = '是故内圣外王之道,暗而不明,郁而不发,天下之人各为其所欲焉以自为方。'
lm = load_lm('jiayan.klm')
tokenizer = CharHMMTokenizer(lm)
print(list(tokenizer.tokenize(text)))
результат:
['是', '故', '内圣外王', '之', '道', ',', '暗', '而', '不', '明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉', '以', '自', '为', '方', '。']
Поскольку древние китайцы не имеют данных об общественном сегментации слов, невозможно оценить эффект, но мы можем интуитивно почувствовать преимущества этого проекта с помощью различных инструментов НЛП:
Попробуйте сравнить результаты причастия LTP (3.4.0):
['是', '故内', '圣外王', '之', '道', ',', '暗而不明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉以自为方', '。']
Попробуйте снова сравнить результаты причастия HANLP:
['是故', '内', '圣', '外', '王之道', ',', '暗', '而', '不明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各为其所欲焉', '以', '自为', '方', '。']
Можно видеть, что слово «Причастие» этого инструмента на древние китайцы значительно лучше, чем у общего китайского инструмента НЛП.
*Обновление: благодаря автору Hanlp HANKC за то, что вы сообщили вам - с начала 2021 года HANLP выпустил глубокое обучение 2.x. Благодаря использованию предварительно обученных языковых моделей для крупномасштабного корпуса, эти корпусы уже включали почти все древние и современные китайцы в Интернет, поэтому влияние на древние китайцы качественно улучшилось. Не только слова причастия, но и частичные эффекты обучения и семантический анализ. Для соответствующего конкретного эффекта причастия слова, пожалуйста, обратитесь к этому вопросу.
Максимальная вероятность уровня слов причастие, в основном в единицах символов, с грубым размером зерна
from jiayan import WordNgramTokenizer
text = '是故内圣外王之道,暗而不明,郁而不发,天下之人各为其所欲焉以自为方。'
tokenizer = WordNgramTokenizer()
print(list(tokenizer.tokenize(text)))
результат:
['是', '故', '内', '圣', '外', '王', '之', '道', ',', '暗', '而', '不', '明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉', '以', '自', '为', '方', '。']
Часть речевой аннотации
from jiayan import CRFPOSTagger
words = ['天下', '大乱', ',', '贤圣', '不', '明', ',', '道德', '不', '一', ',', '天下', '多', '得', '一', '察', '焉', '以', '自', '好', '。']
postagger = CRFPOSTagger()
postagger.load('pos_model')
print(postagger.postag(words))
результат:
['n', 'a', 'wp', 'n', 'd', 'a', 'wp', 'n', 'd', 'm', 'wp', 'n', 'a', 'u', 'm', 'v', 'r', 'p', 'r', 'a', 'wp']
Переломайте предложение
from jiayan import load_lm
from jiayan import CRFSentencizer
text = '天下大乱贤圣不明道德不一天下多得一察焉以自好譬如耳目皆有所明不能相通犹百家众技也皆有所长时有所用虽然不该不遍一之士也判天地之美析万物之理察古人之全寡能备于天地之美称神之容是故内圣外王之道暗而不明郁而不发天下之人各为其所欲焉以自为方悲夫百家往而不反必不合矣后世之学者不幸不见天地之纯古之大体道术将为天下裂'
lm = load_lm('jiayan.klm')
sentencizer = CRFSentencizer(lm)
sentencizer.load('cut_model')
print(sentencizer.sentencize(text))
результат:
['天下大乱', '贤圣不明', '道德不一', '天下多得一察焉以自好', '譬如耳目', '皆有所明', '不能相通', '犹百家众技也', '皆有所长', '时有所用', '虽然', '不该不遍', '一之士也', '判天地之美', '析万物之理', '察古人之全', '寡能备于天地之美', '称神之容', '是故内圣外王之道', '暗而不明', '郁而不发', '天下之人各为其所欲焉以自为方', '悲夫', '百家往而不反', '必不合矣', '后世之学者', '不幸不见天地之纯', '古之大体', '道术将为天下裂']
пунктуация
from jiayan import load_lm
from jiayan import CRFPunctuator
text = '天下大乱贤圣不明道德不一天下多得一察焉以自好譬如耳目皆有所明不能相通犹百家众技也皆有所长时有所用虽然不该不遍一之士也判天地之美析万物之理察古人之全寡能备于天地之美称神之容是故内圣外王之道暗而不明郁而不发天下之人各为其所欲焉以自为方悲夫百家往而不反必不合矣后世之学者不幸不见天地之纯古之大体道术将为天下裂'
lm = load_lm('jiayan.klm')
punctuator = CRFPunctuator(lm, 'cut_model')
punctuator.load('punc_model')
print(punctuator.punctuate(text))
результат:天下大乱,贤圣不明,道德不一,天下多得一察焉以自好,譬如耳目,皆有所明,不能相通,犹百家众技也,皆有所长,时有所用,虽然,不该不遍,一之士也,判天地之美,析万物之理,察古人之全,寡能备于天地之美,称神之容,是故内圣外王之道,暗而不明,郁而不发,天下之人各为其所欲焉以自为方,悲夫!百家往而不反,必不合矣,后世之学者,不幸不见天地之纯,古之大体,道术将为天下裂。
Jiayan, что означает китайские иероглифы, выгравированные на Oracle Bones, является профессиональным инструментом Python NLP для классического китайца.
Преобладающие китайские инструменты НЛП в основном обучаются современным китайским данным, что приводит к плохой производительности в классическом китайском языке (см. Токенизация ). Цель этого проекта - помочь классической обработке информации о китайском языке.
Текущая версия поддерживает строительство лексиконов, токенизацию, тегискую теги, сегментацию предложений и автоматическую пунктуацию, больше функций в разработке.
$ pip install jiayan
$ pip install https://github.com/kpu/kenlm/archive/master.zip
Приведенные ниже коды использования из примеров.py.
Загрузите модели и раскапывание их: Google Drive
Лексикон строительство
from jiayan import PMIEntropyLexiconConstructor
constructor = PMIEntropyLexiconConstructor()
lexicon = constructor.construct_lexicon('庄子.txt')
constructor.save(lexicon, 'Zhuangzi_Lexicon.csv')
Результаты:
Word,Frequency,PMI,R_Entropy,L_Entropy
之,2999,80,7.944909328101839,8.279435615456894
而,2089,80,7.354575005231323,8.615211168836439
不,1941,80,7.244331150611089,6.362131306822925
...
天下,280,195.23602384978196,5.158574399464853,5.24731990592901
圣人,111,150.0620531154239,4.622606551534004,4.6853474419338585
万物,94,377.59805590304126,4.5959107835319895,4.538837960294887
天地,92,186.73504238078462,3.1492586603863617,4.894533538722486
孔子,80,176.2550051738876,4.284638190120882,2.4056390622295662
庄子,76,169.26227942514097,2.328252899085616,2.1920058354921066
仁义,58,882.3468468468468,3.501609497059026,4.96900162987599
老聃,45,2281.2228260869565,2.384853500510039,2.4331958387289765
...
Токенизация
На основе персонажа HMM, рекомендуется, нуждается в языковой модели: jiayan.klm
from jiayan import load_lm
from jiayan import CharHMMTokenizer
text = '是故内圣外王之道,暗而不明,郁而不发,天下之人各为其所欲焉以自为方。'
lm = load_lm('jiayan.klm')
tokenizer = CharHMMTokenizer(lm)
print(list(tokenizer.tokenize(text)))
Результаты:
['是', '故', '内圣外王', '之', '道', ',', '暗', '而', '不', '明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉', '以', '自', '为', '方', '。']
Поскольку не существует публичных токенизационных данных для классического китайца, трудно проводить оценку эффективности напрямую; Тем не менее, мы можем сравнить результаты с другими популярными современными китайскими инструментами НЛП, чтобы проверить производительность:
Сравните токенизирующий результат LTP (3.4.0):
['是', '故内', '圣外王', '之', '道', ',', '暗而不明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉以自为方', '。']
Кроме того, сравните токенизирующий результат HANLP:
['是故', '内', '圣', '外', '王之道', ',', '暗', '而', '不明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各为其所欲焉', '以', '自为', '方', '。']
Очевидно, что Цзяян обладает гораздо лучшей токенизирующей производительности, чем общие китайские инструменты НЛП.
Максимальный путь вероятности приближается к токенизации на основе слов
from jiayan import WordNgramTokenizer
text = '是故内圣外王之道,暗而不明,郁而不发,天下之人各为其所欲焉以自为方。'
tokenizer = WordNgramTokenizer()
print(list(tokenizer.tokenize(text)))
Результаты:
['是', '故', '内', '圣', '外', '王', '之', '道', ',', '暗', '而', '不', '明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉', '以', '自', '为', '方', '。']
POS -метка
from jiayan import CRFPOSTagger
words = ['天下', '大乱', ',', '贤圣', '不', '明', ',', '道德', '不', '一', ',', '天下', '多', '得', '一', '察', '焉', '以', '自', '好', '。']
postagger = CRFPOSTagger()
postagger.load('pos_model')
print(postagger.postag(words))
Результаты:
['n', 'a', 'wp', 'n', 'd', 'a', 'wp', 'n', 'd', 'm', 'wp', 'n', 'a', 'u', 'm', 'v', 'r', 'p', 'r', 'a', 'wp']
Сегментация предложения
from jiayan import load_lm
from jiayan import CRFSentencizer
text = '天下大乱贤圣不明道德不一天下多得一察焉以自好譬如耳目皆有所明不能相通犹百家众技也皆有所长时有所用虽然不该不遍一之士也判天地之美析万物之理察古人之全寡能备于天地之美称神之容是故内圣外王之道暗而不明郁而不发天下之人各为其所欲焉以自为方悲夫百家往而不反必不合矣后世之学者不幸不见天地之纯古之大体道术将为天下裂'
lm = load_lm('jiayan.klm')
sentencizer = CRFSentencizer(lm)
sentencizer.load('cut_model')
print(sentencizer.sentencize(text))
Результаты:
['天下大乱', '贤圣不明', '道德不一', '天下多得一察焉以自好', '譬如耳目', '皆有所明', '不能相通', '犹百家众技也', '皆有所长', '时有所用', '虽然', '不该不遍', '一之士也', '判天地之美', '析万物之理', '察古人之全', '寡能备于天地之美', '称神之容', '是故内圣外王之道', '暗而不明', '郁而不发', '天下之人各为其所欲焉以自为方', '悲夫', '百家往而不反', '必不合矣', '后世之学者', '不幸不见天地之纯', '古之大体', '道术将为天下裂']
Пунктуация
from jiayan import load_lm
from jiayan import CRFPunctuator
text = '天下大乱贤圣不明道德不一天下多得一察焉以自好譬如耳目皆有所明不能相通犹百家众技也皆有所长时有所用虽然不该不遍一之士也判天地之美析万物之理察古人之全寡能备于天地之美称神之容是故内圣外王之道暗而不明郁而不发天下之人各为其所欲焉以自为方悲夫百家往而不反必不合矣后世之学者不幸不见天地之纯古之大体道术将为天下裂'
lm = load_lm('jiayan.klm')
punctuator = CRFPunctuator(lm, 'cut_model')
punctuator.load('punc_model')
print(punctuator.punctuate(text))
Результаты:天下大乱,贤圣不明,道德不一,天下多得一察焉以自好,譬如耳目,皆有所明,不能相通,犹百家众技也,皆有所长,时有所用,虽然,不该不遍,一之士也,判天地之美,析万物之理,察古人之全,寡能备于天地之美,称神之容,是故内圣外王之道,暗而不明,郁而不发,天下之人各为其所欲焉以自为方,悲夫!百家往而不反,必不合矣,后世之学者,不幸不见天地之纯,古之大体,道术将为天下裂。