Tagger

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
merve28
User
Beiträge: 18
Registriert: Mittwoch 9. März 2016, 19:38

Hallo,
ich möchte einen Text taggen, jedoch funktioniert es nicht. Ich mache es nach dem Beispiel in Bird´s NLTK book:
>>>text = word_tokenize("And now for something completely different")
>>> nltk.pos_tag(text)
[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'),
('completely', 'RB'), ('different', 'JJ')]

Aber wenn ich auch nur diesen Beispiel Code in Python eingebe kommt folgende Fehlermeldung:
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
print (nltk.pos_tag(d))
File "C:\Python34\lib\site-packages\nltk\tag\__init__.py", line 110, in pos_tag
tagger = PerceptronTagger()
File "C:\Python34\lib\site-packages\nltk\tag\perceptron.py", line 141, in __init__
self.load(AP_MODEL_LOC)
File "C:\Python34\lib\site-packages\nltk\tag\perceptron.py", line 209, in load
self.model.weights, self.tagdict, self.classes = load(loc)
File "C:\Python34\lib\site-packages\nltk\data.py", line 801, in load
opened_resource = _open(resource_url)
File "C:\Python34\lib\site-packages\nltk\data.py", line 924, in _open
return urlopen(resource_url)
File "C:\Python34\lib\urllib\request.py", line 153, in urlopen
return opener.open(url, data, timeout)
File "C:\Python34\lib\urllib\request.py", line 455, in open
response = self._open(req, data)
File "C:\Python34\lib\urllib\request.py", line 478, in _open
'unknown_open', req)
File "C:\Python34\lib\urllib\request.py", line 433, in _call_chain
result = func(*args)
File "C:\Python34\lib\urllib\request.py", line 1244, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: c>

Ich bin Programmieranfänger und habe wirklich keine Ahnung, warum das Taggen nicht funktioniert. Kann mir da bitte jemand weiterhelfen?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Als erstes könntest du uns helfen.

1. Wo hast du die Bibliothek her?
2. Welchen Code führst du aus? (Komplett mit import usw.)
3. Welche Fehler Meldung kommt dabei raus

Wenn sich nämlich schon der gezeigte Code und der im Traceback unterscheidet vergeht mir (und vll. den meisten anderen) schon die Lust zu antworten.

PS: Ach und noch was kümmer dich um ein Problem nach dem andere.

PPS: Geh immer davon aus das kein Mensch die Bibliothek kennt die du verwendest und dir trotzdem helfen kann wenn du erklärst was du vor hast und den Code zeigst und Fehler
merve28
User
Beiträge: 18
Registriert: Mittwoch 9. März 2016, 19:38

Code: Alles auswählen

import nltk
from nltk import FreqDist
from nltk import word_tokenize
from nltk.corpus import stopwords
import re
from nltk.corpus import PlaintextCorpusReader
corpus_root = ("C:\Python34\my_corpus")
my_corpus = PlaintextCorpusReader(corpus_root, ".*")
xy = open("winner_2003.txt", "rU")
raw= xy.read()
tokens = word_tokenize(raw) #Text tokenisiert
stopwords= stopwords.words("english")
text_to_stopwords= [w for w in tokens if w.lower() not in stopwords] #Stopwords aus dem Text entfernt
wnl = nltk.WordNetLemmatizer()
tokens_lemma=[wnl.lemmatize(t) for t in text_to_stopwords if t.isalpha()] #Lemmatisiert
def stem(word):
regular = r'^(.*?)(ing|ed)?$' #von endungen wie ed befreien
stem, suffix = re.findall(regular, word)[0]
return stem
tokens_stemmer= [stem(t) for t in tokens_lemma] #Endungen ing und ed entfernt.

Da aber beim letzten Schritt von allen Wörtern mit den Endungen ing und ed entfernt werden, möchte ich die Verben herausfinden und den Code so umändern, dass die Endungen nur bei den Verben entfernt werden:

Code: Alles auswählen

text = word_tokenize(tokens_stemmer)
print (nltk.pos_tag(text))
Aber hier erscheint dann die im ersten Beitrag genannte Fehlermeldung.

Die Bibliothek wurde mit nltk zusammen installiert
Zuletzt geändert von Anonymous am Freitag 11. März 2016, 16:38, insgesamt 1-mal geändert.
Grund: Quelltext in Code-Tags gesetzt.
merve28
User
Beiträge: 18
Registriert: Mittwoch 9. März 2016, 19:38

ich hab halt bisschen weiter nach einer Lösung gesucht und durch nltk.download() herausgefunden, dass die Tagger "out of date" sind und dachte mit, dass die Fehlermeldung auch daran liegen könnte.
Antworten