Stanford NLP, demo'd tutaj , daje moc takiego:
Colorless/JJ green/JJ ideas/NNS sleep/VBP furiously/RB ./.
Co oznaczają tagi Część mowy? Nie mogę znaleźć oficjalnej listy. Czy to własny system Stanforda, czy też używają uniwersalnych tagów? (Co to jest JJ
na przykład?)
Ponadto, gdy przeglądam zdania, szukając na przykład rzeczowników, w końcu robię coś takiego, jak sprawdzanie, czy tag .contains('N')
. To wydaje się dość słabe. Czy istnieje lepszy sposób na programowe wyszukiwanie określonej części mowy?
java
nlp
stanford-nlp
part-of-speech
Nick Heiner
źródło
źródło
.starts_with('N')
raczej niżcontains
, ponieważ „IN” i „VBN” również zawierają „N”. I to jest prawdopodobnie najlepszy sposób na znalezienie słów, które zdaniem taggera są rzeczownikami.Odpowiedzi:
Projekt Penn Treebank . Spójrz na tagowanie części mowy ps.
JJ to przymiotnik. NNS to rzeczownik, liczba mnoga. VBP jest czasownikiem teraźniejszym. RB to przysłówek.
To dla angielskiego. Dla Chińczyków jest to chiński Treebank Penn. A dla niemieckiego jest to korpus NEGRA.
źródło
źródło
W zaakceptowanej powyżej odpowiedzi brakuje następujących informacji:
Istnieje również 9 zdefiniowanych znaczników interpunkcyjnych (które nie są wymienione w niektórych odniesieniach, patrz tutaj ). To są:
źródło
Oto bardziej kompletna lista tagów dla Penn Treebank (zamieszczona tutaj ze względu na kompletność):
http://www.surdeanu.info/mihai/teaching/ista555-fall13/readings/PennTreebankConstituents.html
Zawiera również znaczniki dla poziomów klauzul i fraz.
Poziom klauzuli
Poziom frazy
(opisy w linku)
źródło
Na wypadek, gdybyś chciał to zakodować ...
źródło
Podaję tutaj całą listę, a także podam link referencyjny
Możesz znaleźć pełną listę tagów części mowy tutaj .
źródło
Jeśli chodzi o drugie pytanie dotyczące znalezienia określonego słowa / fragmentu z tagiem POS (np. Rzeczownika), oto przykładowy kod, który możesz śledzić.
Wynik to:
źródło
Wydają się być tagami Brown Corpus .
źródło
Stanford CoreNLP Tagi dla innych języków: francuski, hiszpański, niemiecki ...
Widzę, że używasz parsera dla języka angielskiego, który jest modelem domyślnym. Możesz użyć parsera dla innych języków (francuski, hiszpański, niemiecki ...) i pamiętaj, że zarówno tokenizery, jak i część tagatorów mowy są różne dla każdego języka. Jeśli chcesz to zrobić, musisz pobrać konkretny model dla języka (używając na przykład kreatora, takiego jak Maven), a następnie ustawić model, którego chcesz użyć. Tutaj masz więcej informacji na ten temat.
Oto listy tagów dla różnych języków:
TAGI DLA FRANCUSKA:
Część tagów mowy dla języka francuskiego
Kategorie frazowe Tagi dla francuskiego:
Funkcje składniowe dla języka francuskiego:
źródło
W kosmosie było to bardzo szybkie, myślę, że w zwykłym notebooku z niższej półki będzie działać tak:
Wynik w kilku próbach:
Więc myślę, że nie musisz się martwić o zapętlenie każdego sprawdzenia tagu POS :)
Więcej ulepszeń otrzymałem po wyłączeniu niektórych potoków:
Tak więc wynik jest szybszy:
źródło