Więc szedłem nltk i zobaczyłem ten kod
entities = nltk.chunk.ne_chunk(tagged)
Teraz moje pytanie brzmi, w jaki sposób ludzie wiedzą, którą metodę zastosować, kiedy i jaka jest kolejność wywołań metod?
Kolejny dziwny kod, który widziałem, był
nltk.corpus.words.words("en")
Teraz, jak można by interpretować .words
śledzony przez .words?
Dlaczego dwa razy tutaj wywoływaliśmy metodę słów i skąd wiadomo, że muszę dwukrotnie wywołać metodę?
Właśnie skończyłem "Udacity - Intro. Do CS (z Pythonem)", ale ten "nltk" robi się zbyt mylący. Pomóżcie, od kilku dni starają się uzyskać logikę tych wszystkich rzeczy.
Odpowiedzi:
8 dla odpowiedzi № 1Nie dzwonisz words
dwa razy. Dzwonisz do words
metoda words
moduł. Wszystko zależy od przestrzeni nazw i modułów. Przeczytaj więcej o Pythonie moduły.
:)
3 dla odpowiedzi № 2
The .
znak w Pythonie to nie tylko dostęp do metod. Oznacza on dostęp do atrybutów w niektórych obiektach. Co dokładnie to oznacza, może zależeć od tego, czym jest obiekt.
W Twoich przykładach nltk.chunk
i nltk.corpus.words
są to nazwy modułów. nltk
jest package
który jest specjalnym rodzajem modułu, który może zawierać inne moduły. Więc jest nltk.corpus
. (I faktycznie, nltk.chunk
jest także pakietem, ale używasz go jako zwykłego modułu, zamiast dostępu do innego modułu w nim).
W nltk.chunk.ne_chunk(tagged)
, kropki dostęp do chunk
atrybut w nltk
moduł, a następnie ne_chunk
atrybut w nltk.chunk
moduł. Taka jest funkcja, która zostaje wywołana.
W nltk.corpus.words.words("en")
, trzecia kropka wyszukuje words
atrybut w nltk.corpus.words
moduł.