Nltk: لم يتم تمرير معلمة اللغة في nltk.tag .__ init __. pos_tag_sents ()

تم إنشاؤها على ٢٠ نوفمبر ٢٠١٨  ·  5تعليقات  ·  مصدر: nltk/nltk

لم يتم تمرير المعلمة lang الخاصة بـ pos_tag_sents () في nltk / tag / __ init__.py.

إلى جانب التغيير في ترتيب الاستثناء في الالتزام 69583ceaaaff7e51dd9f07f4f226d3a2b75bea69 (الأسطر 110-116 من nltk / tag / __ init__.py) ، ينتج عن هذا الآن خطأ "NotImplementedError ('حاليًا ، يدعم ltk pos_tag فقط اللغة الإنجليزية والروسية' ' eng 'or lang =' rus ')' "عند وضع علامات على جملة.

التعليق الأكثر فائدة

الإصدار الأخير هو السابع عشر بينما تم دمج هذا بعد ذلك

ال 5 كومينتر

شكرا zhangsfl

ما زلت أتلقى هذا الخطأ على الرغم من أنني قمت بالتحديث إلى أحدث الملفات وحاولت أيضًا إضافة المعلمة lang='eng' يدويًا ، ولكن هذا أيضًا لم ينجح. تضمين التغريدة

الإصدار الأخير هو السابع عشر بينما تم دمج هذا بعد ذلك

ما زلت أتلقى هذا الخطأ على الرغم من أنني قمت بالتحديث إلى أحدث الملفات وحاولت أيضًا إضافة المعلمة lang='eng' يدويًا ، ولكن هذا أيضًا لم ينجح. تضمين التغريدة

استبدل محتوى ملف (__init__.py) بما يلي:

- - الترميز: utf-8 - -

مجموعة أدوات اللغة الطبيعية: العلامات

#

حقوق النشر (C) 2001-2019 مشروع NLTK

المؤلف: إدوارد لوبر [email protected]

ستيفن بيرد [email protected] (إضافات طفيفة)

URL: http://nltk.org/

للحصول على معلومات الترخيص ، راجع LICENSE.TXT

""
علامات NLTK

تحتوي هذه الحزمة على فئات وواجهات لجزء من الكلام
وضع العلامات ، أو ببساطة "وضع العلامات".

"العلامة" هي سلسلة حساسة لحالة الأحرف تحدد بعض خصائص الرمز المميز ،
مثل جزء الكلام. يتم ترميز الرموز المميزة التي تم وضع علامة عليها في شكل مجموعات
(tag, token) . على سبيل المثال ، يتم دمج الرمز المميز التالي ذي العلامات
الكلمة 'fly' مع جزء اسمي من علامة الكلام ( 'NN' ):

>>> tagged_tok = ('fly', 'NN')

يتوفر tagger جاهز للغة الإنجليزية. يستخدم مجموعة علامات Penn Treebank:

>>> from nltk import pos_tag, word_tokenize
>>> pos_tag(word_tokenize("John's big idea isn't all that bad."))
[('John', 'NNP'), ("'s", 'POS'), ('big', 'JJ'), ('idea', 'NN'), ('is', 'VBZ'),
("n't", 'RB'), ('all', 'PDT'), ('that', 'DT'), ('bad', 'JJ'), ('.', '.')]

يتوفر أيضًا برنامج تمييز روسي إذا قمت بتحديد lang = "rus". يستخدم
مجموعة علامات المجموعة الوطنية الروسية:

>>> pos_tag(word_tokenize("Илья оторопел и дважды перечитал бумажку."), lang='rus')    # doctest: +SKIP
[('Илья', 'S'), ('оторопел', 'V'), ('и', 'CONJ'), ('дважды', 'ADV'), ('перечитал', 'V'),
('бумажку', 'S'), ('.', 'NONLEX')]

تحدد هذه الحزمة عدة علامات تمييز ، والتي تأخذ قائمة من الرموز المميزة ،
قم بتعيين علامة لكل علامة ، وقم بإرجاع القائمة الناتجة من الرموز المميزة ذات العلامات.
يتم إنشاء معظم أدوات العلامات تلقائيًا بناءً على مجموعة التدريب.
على سبيل المثال ، يقوم برنامج unigram tagger بتمييز كل كلمة w عن طريق التحقق من what
العلامة الأكثر شيوعًا لـ w كانت في مجموعة التدريب:

>>> from nltk.corpus import brown
>>> from nltk.tag import UnigramTagger
>>> tagger = UnigramTagger(brown.tagged_sents(categories='news')[:500])
>>> sent = ['Mitchell', 'decried', 'the', 'high', 'rate', 'of', 'unemployment']
>>> for word, tag in tagger.tag(sent):
...     print(word, '->', tag)
Mitchell -> NP
decried -> None
the -> AT
high -> JJ
rate -> NN
of -> IN
unemployment -> None

لاحظ أن الكلمات التي لم يرها الوسم أثناء التدريب تتلقى علامة
من None .

نقيم أداة تمييز على البيانات التي لم يتم رؤيتها أثناء التدريب:

>>> tagger.evaluate(brown.tagged_sents(categories='news')[500:600])
0.73...

لمزيد من المعلومات ، يرجى الرجوع إلى الفصل الخامس من كتاب NLTK.
""
من __future__ استيراد print_function

من nltk.tag.api استيراد العلامات
من nltk.tag.util استيراد str2tuple ، tuple2str ، untag
من nltk.tag. الاستيراد المتسلسل (
تسلسلي
السياق
DefaultTagger ،
NgramTagger ،
Unigram
BigramTagger ،
تريجرام
AffixTagger ،
RegexpTagger ،
المصنف
المصنف
)
من nltk.tag.brill استيراد BrillTagger
من nltk.tag.brill_trainer استيراد BrillTaggerTrainer
من nltk.tag.tnt استيراد TnT
من nltk.tag.hunpos استيراد HunposTagger
من nltk.tag.stanford استيراد StanfordTagger ، StanfordPOSTagger ، StanfordNERTagger
من nltk.tag.hmm استيراد HiddenMarkovModelTagger ، HiddenMarkovModelTrainer
من nltk.tag.senna استيراد SennaTagger ، SennaChunkTagger ، SennaNERTagger
من nltk.tag
من nltk.tag.crf استيراد CRFTagger
من nltk.tag.perceptron استيراد PerceptronTagger

من تحميل استيراد nltk.data ، ابحث عن

RUS_PICKLE = (
"taggers / Averaged_perceptron_tagger_ru / Averaged_perceptron_tagger_ru.pickle"
)

def _get_tagger (lang = لا شيء):
إذا كانت lang == 'rus':
tagger = PerceptronTagger (خطأ)
ap_russian_model_loc = 'file:' + str (find (RUS_PICKLE))
tagger.load (ap_russian_model_loc)
آخر:
tagger = PerceptronTagger ()
عودة tagger

def _pos_tag (الرموز المميزة ، مجموعة العلامات = لا شيء ، tagger = لا شيء ، lang = لا شيء):
# حاليًا يدعم اللغة الإنجليزية والروسية فقط.
if lang not in ['eng'، 'rus']:
رفع NotImplementedError (
"حاليًا ، يدعم NLTK pos_tag اللغتين الإنجليزية والروسية فقط"
"(ie lang = 'eng' or lang = 'rus')"
)
آخر:
tagged_tokens = tagger.tag (الرموز)
إذا كانت مجموعة العلامات: # خرائط لمجموعة العلامات المحددة.
إذا كانت lang == 'eng':
tagged_tokens = [
(token، map_tag ('en-ptb'، tagset، tag))
لـ (رمز ، علامة) في tagged_tokens
]
إليف لانج == 'روس':
# لاحظ أن علامات Russion pos الجديدة من النموذج تحتوي على لاحقات ،
# انظر https://github.com/nltk/nltk/issues/2151#issuecomment -430709018
tagged_tokens = [
(token، map_tag ('ru-rnc-new'، tagset، tag.partition ('=') [0]))
لـ (رمز ، علامة) في tagged_tokens
]
العودة tagged_tokens

def pos_tag (الرموز المميزة ، مجموعة العلامات = لا شيء ، lang = 'eng'):
""
استخدم جزء NLTK الموصى به حاليًا من برنامج تمييز الكلام إلى
ضع علامة على قائمة الرموز المميزة.

    >>> from nltk.tag import pos_tag
    >>> from nltk.tokenize import word_tokenize
    >>> pos_tag(word_tokenize("John's big idea isn't all that bad."))
    [('John', 'NNP'), ("'s", 'POS'), ('big', 'JJ'), ('idea', 'NN'), ('is', 'VBZ'),
    ("n't", 'RB'), ('all', 'PDT'), ('that', 'DT'), ('bad', 'JJ'), ('.', '.')]
    >>> pos_tag(word_tokenize("John's big idea isn't all that bad."), tagset='universal')
    [('John', 'NOUN'), ("'s", 'PRT'), ('big', 'ADJ'), ('idea', 'NOUN'), ('is', 'VERB'),
    ("n't", 'ADV'), ('all', 'DET'), ('that', 'DET'), ('bad', 'ADJ'), ('.', '.')]

NB. Use `pos_tag_sents()` for efficient tagging of more than one sentence.

:param tokens: Sequence of tokens to be tagged
:type tokens: list(str)
:param tagset: the tagset to be used, e.g. universal, wsj, brown
:type tagset: str
:param lang: the ISO 639 code of the language, e.g. 'eng' for English, 'rus' for Russian
:type lang: str
:return: The tagged tokens
:rtype: list(tuple(str, str))
"""
tagger = _get_tagger(lang)
return _pos_tag(tokens, tagset, tagger, lang)

def pos_tag_sents (جمل ، مجموعة العلامات = بلا ، lang = 'eng'):
""
استخدم جزء NLTK الموصى به حاليًا من برنامج تمييز الكلام لوضع علامة على ملف
قائمة جمل معينة ، كل منها يتكون من قائمة الرموز.

:param tokens: List of sentences to be tagged
:type tokens: list(list(str))
:param tagset: the tagset to be used, e.g. universal, wsj, brown
:type tagset: str
:param lang: the ISO 639 code of the language, e.g. 'eng' for English, 'rus' for Russian
:type lang: str
:return: The list of tagged sentences
:rtype: list(list(tuple(str, str)))
"""
tagger = _get_tagger(lang)
return [_pos_tag(sent, tagset, tagger, lang) for sent in sentences]
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات