الصينية
إنجليزي
A ، الذي يعني "Oracle Bone Classical Chinese" ، هي مجموعة أدوات NLP التي تركز على المعالجة الصينية القديمة.
حاليًا ، تستخدم أدوات NLP الصينية الشائعة في الغالب الصينيين المعاصرين باعتبارها المجموعة الأساسية ، وتأثير المعالجة للصينيين القدامى ليس مرضيًا (انظر النعت للحصول على التفاصيل). تتمثل النية الأصلية لهذا المشروع في المساعدة في معالجة المعلومات الصينية القديمة ، ومساعدة العلماء الصينيين القدامى والعشاق الذين يهتمون بحفر المعادن الثقافية القديمة لتحليل واستخدام المواد الصينية الكلاسيكية بشكل أفضل لإنشاء "منتجات ثقافية جديدة" من "التراث الثقافي".
يدعم الإصدار الحالي خمس وظائف: بناء المعجم ، تجزئة الكلمات التلقائية ، توضيح جزء من الكلام ، قراءة الجملة الصينية الكلاسيكية وعلامات الترقيم ، والمزيد من الوظائف قيد التطوير.
$ pip install jiayan
$ pip install https://github.com/kpu/kenlm/archive/master.zip
يتم استخدام الوحدات التالية من أمثلة.
قم بتنزيل النموذج وإلغاء الضغط: 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
...
النعت
كلمة Markov Word ذات مستوى Markov على مستوى الأحرف ، يتماشى التأثير مع الإحساس باللغة ، ويوصى بالاستخدام ، ويجب تحميل نموذج اللغة 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)))
نتيجة:
['是', '故', '内圣外王', '之', '道', ',', '暗', '而', '不', '明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉', '以', '自', '为', '方', '。']
نظرًا لأن الصينيين القدامى ليس لديهم بيانات تجزئة الكلمات العامة ، فمن المستحيل تقييم التأثير ، لكن يمكننا أن نشعر بشكل حدسي بمزايا هذا المشروع من خلال أدوات NLP المختلفة:
حاول مقارنة نتائج النموذج LTP (3.4.0):
['是', '故内', '圣外王', '之', '道', ',', '暗而不明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉以自为方', '。']
حاول مقارنة نتائج النعت في Hanlp Word مرة أخرى:
['是故', '内', '圣', '外', '王之道', ',', '暗', '而', '不明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各为其所欲焉', '以', '自为', '方', '。']
يمكن أن نرى أن كلمة "تأثير كلمة هذه الأداة على الصينية القديمة" أفضل بكثير من تأثير أداة NLP الصينية العامة.
*تحديث: بفضل مؤلف هانلب هانكك لإعلامك - من أوائل عام 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))
نتيجة:天下大乱,贤圣不明,道德不一,天下多得一察焉以自好,譬如耳目,皆有所明,不能相通,犹百家众技也,皆有所长,时有所用,虽然,不该不遍,一之士也,判天地之美,析万物之理,察古人之全,寡能备于天地之美,称神之容,是故内圣外王之道,暗而不明,郁而不发,天下之人各为其所欲焉以自为方,悲夫!百家往而不反,必不合矣,后世之学者,不幸不见天地之纯,古之大体,道术将为天下裂。
جيايان ، مما يعني أن الشخصيات الصينية محفورة على Oracle Bones ، هي أداة Python NLP المهنية للصينية الكلاسيكية.
يتم تدريب أدوات NLP الصينية السائدة بشكل أساسي على البيانات الصينية الحديثة ، مما يؤدي إلى أداء سيئ على الصينية الكلاسيكية (انظر الرمز المميز ). الغرض من هذا المشروع هو مساعدة معالجة المعلومات الصينية الكلاسيكية.
يدعم الإصدار الحالي بناء المعجم ، والرمز ، ووضع علامات POS ، وتجزئة الجملة وعلامات الترقيم التلقائية ، والمزيد من الميزات قيد التطوير.
$ pip install jiayan
$ pip install https://github.com/kpu/kenlm/archive/master.zip
رموز الاستخدام أدناه كلها من أمثلة.
قم بتنزيل النماذج وفك ضغطها: 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
...
الرمز المميز
الحرف القائمة على الشخصية ، موصى بها ، نموذج اللغة يحتاج: 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)))
نتائج:
['是', '故', '内圣外王', '之', '道', ',', '暗', '而', '不', '明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉', '以', '自', '为', '方', '。']
نظرًا لعدم وجود بيانات رمزية عامة للصينية الكلاسيكية ، من الصعب إجراء تقييم الأداء مباشرة ؛ ومع ذلك ، يمكننا مقارنة النتائج مع أدوات NLP الصينية الشهيرة الأخرى للتحقق من الأداء:
قارن النتيجة الرمزية لـ LTP (3.4.0):
['是', '故内', '圣外王', '之', '道', ',', '暗而不明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各', '为', '其', '所', '欲', '焉以自为方', '。']
أيضا ، قارن نتيجة الرمز المميز لـ Hanlp:
['是故', '内', '圣', '外', '王之道', ',', '暗', '而', '不明', ',', '郁', '而', '不', '发', ',', '天下', '之', '人', '各为其所欲焉', '以', '自为', '方', '。']
من الواضح أن جيايان لديه أداء رمزي أفضل بكثير من أدوات NLP الصينية العامة.
أقصى مسار الاحتمالات الذي يقترب من الرمز المميز على أساس الكلمات
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))
نتائج:天下大乱,贤圣不明,道德不一,天下多得一察焉以自好,譬如耳目,皆有所明,不能相通,犹百家众技也,皆有所长,时有所用,虽然,不该不遍,一之士也,判天地之美,析万物之理,察古人之全,寡能备于天地之美,称神之容,是故内圣外王之道,暗而不明,郁而不发,天下之人各为其所欲焉以自为方,悲夫!百家往而不反,必不合矣,后世之学者,不幸不见天地之纯,古之大体,道术将为天下裂。