سؤال

أنا باستخدام NLTK استخراج الأسماء من النص-سلسلة بدءا الأمر التالي:

tagged_text = nltk.pos_tag(nltk.Text(nltk.word_tokenize(some_string)))

أنه يعمل بشكل جيد في اللغة الإنجليزية. هل هناك طريقة سهلة تجعل من العمل بالنسبة الألمانية أيضا ؟

(ليس لدي تجربة مع اللغة الطبيعية البرمجة, ولكن تمكنت من استخدام بيثون nltk المكتبة والتي هي كبيرة حتى الآن.)

هل كانت مفيدة؟

المحلول

اللغة الطبيعية يعمل سحره من خلال الاستفادة من المجاميع و الإحصاءات التي تقدمها.عليك أن تقول nltk عن بعض الألماني الإحضار لمساعدتها tokenize الألمانية بشكل صحيح.أعتقد EUROPARL الإحضار قد تساعد تحصل على الذهاب.

انظر nltk.الإحضار.europarl_raw و هذا الجواب على سبيل المثال التكوين.

أيضا, النظر في وضع علامات على هذا السؤال مع "البرمجة اللغوية العصبية".

نصائح أخرى

على نمط المكتبة يتضمن وظيفة تحليل الجمل الألمانية والنتيجة يشمل جزء من الكلام العلامات.التالية هي نسخ من الوثائق:

from pattern.de import parse, split
s = parse('Die Katze liegt auf der Matte.')
s = split(s)
print s.sentences[0]

>>>   Sentence('Die/DT/B-NP/O Katze/NN/I-NP/O liegt/VB/B-VP/O'
     'auf/IN/B-PP/B-PNP der/DT/B-NP/I-PNP Matte/NN/I-NP/I-PNP ././O/O')

إذا كنت تفضل درجات حرارة سطح البحر الوسم مجموعة يمكنك تعيين المعلمة اختيارية tagset="STTS".

جزء من خطاب (POS) علامات محددة جدا معين [الطبيعية] اللغة.NLTK يتضمن العديد من مختلف taggers ، والتي تستخدم تقنيات متميزة لاستنتاج الوسم معين المميز في رمزية.معظم (ولكن ليس كل) من هذه taggers استخدام نموذج إحصائي من أنواع الرئيسي أو الوحيد جهاز "تفعل خدعة".هذه taggers تتطلب بعض "بيانات التدريب" لبناء هذه الإحصائية تمثيل اللغة بيانات التدريب يأتي في شكل المجاميع.

على NTLK "التوزيع" في حد ذاته يتضمن العديد من هذه المجاميع ، وكذلك مجموعة من "المجاميع القراء" التي توفر API قراءة أنواع مختلفة من المجاميع.أنا لا أعرف الوضع في NTLK السليم ، وإذا كان هذا يشمل أي الألمانية الإحضار.ومع ذلك يمكنك تحديد موقع مجاني مجانا بعض المجاميع التي سوف تحتاج إلى تحويل إلى صيغة ترضي السليم NTLK المجاميع القارئ ثم يمكنك استخدام هذا لتدريب POS tagger اللغة الألمانية.

يمكنك حتى إنشاء الخاصة بك الإحضار, ولكن هذا هو الجحيم مضنية العمل ؛ إذا كنت تعمل في الجامعة عليك أن تجد طرق رشوة وغير ذلك إجبار الطلاب أن تفعل ذلك بالنسبة لك ;-)

ربما يمكنك استخدام ستانفورد POS tagger.وفيما يلي وصفة كتبت.هناك بيثون وصفات الألمانية البرمجة اللغوية العصبية التي جمعت و يمكنك الوصول إليها على http://htmlpreview.github.io/?https://github.com/alvations/DLTK/blob/master/docs/index.html

#-*- coding: utf8 -*-

import os, glob, codecs

def installStanfordTag():
    if not os.path.exists('stanford-postagger-full-2013-06-20'):
        os.system('wget http://nlp.stanford.edu/software/stanford-postagger-full-2013-06-20.zip')
        os.system('unzip stanford-postagger-full-2013-06-20.zip')
    return

def tag(infile):
    cmd = "./stanford-postagger.sh "+models[m]+" "+infile
    tagout = os.popen(cmd).readlines()
    return [i.strip() for i in tagout]

def taglinebyline(sents):
    tagged = []
    for ss in sents:
        os.popen("echo '''"+ss+"''' > stanfordtemp.txt")
        tagged.append(tag('stanfordtemp.txt')[0])
    return tagged

installStanfordTag()
stagdir = './stanford-postagger-full-2013-06-20/'
models = {'fast':'models/german-fast.tagger',
          'dewac':'models/german-dewac.tagger',
          'hgc':'models/german-hgc.tagger'}
os.chdir(stagdir)
print os.getcwd()


m = 'fast' # It's best to use the fast german tagger if your data is small.

sentences = ['Ich bin schwanger .','Ich bin wieder schwanger .','Ich verstehe nur Bahnhof .']

tagged_sents = taglinebyline(sentences) # Call the stanford tagger

for sent in tagged_sents:
    print sent

كنت قد كتبت بلوق وظيفة حول كيفية تحويل الألمانية المشروح النمر الإحضار من أجل استخدامه مع NLTK. نلقي نظرة على ذلك هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top