A PNL de Stanford, demonstrada aqui , fornece uma saída como esta:
Colorless/JJ green/JJ ideas/NNS sleep/VBP furiously/RB ./.
O que significam as tags Part of Speech? Não consigo encontrar uma lista oficial. É o próprio sistema de Stanford ou eles estão usando tags universais? (O que é JJ
, por exemplo?)
Além disso, quando estou percorrendo as frases, procurando substantivos, por exemplo, acabo fazendo algo como verificar se a tag .contains('N')
. Isso parece muito fraco. Existe uma maneira melhor de procurar programaticamente uma determinada parte do discurso?
java
nlp
stanford-nlp
part-of-speech
Nick Heiner
fonte
fonte
.starts_with('N')
em vez decontains
, uma vez que 'IN' e 'VBN' também contêm 'N'. E essa é provavelmente a melhor maneira de descobrir quais palavras o tagger acha que são substantivos.Respostas:
O Projeto Penn Treebank . Veja a marcação de parte do discurso ps.
JJ é adjetivo. NNS é substantivo, plural. VBP é verbo no tempo presente. RB é advérbio.
Isso é para inglês. Para os chineses, é o Penn Chinese Treebank. E para o alemão é o corpus da NEGRA.
fonte
fonte
A resposta aceita acima está faltando as seguintes informações:
Também há 9 tags de pontuação definidas (que não estão listadas em algumas referências, veja aqui ). Esses são:
fonte
Aqui está uma lista mais completa de tags para o Penn Treebank (postada aqui para fins de completude):
http://www.surdeanu.info/mihai/teaching/ista555-fall13/readings/PennTreebankConstituents.html
Ele também inclui tags para níveis de cláusula e frase.
Nível da cláusula
Nível da frase
(descrições no link)
fonte
Apenas no caso de você querer codificá-lo ...
fonte
Estou fornecendo a lista completa aqui e também fornecendo link de referência
Você pode descobrir a lista completa de tags Parts of Speech aqui .
fonte
Com relação à sua segunda questão de encontrar uma determinada palavra / bloco com a tag POS (por exemplo, Substantivo), aqui está o código de exemplo que você pode seguir.
A saída é:
fonte
Eles parecem ser tags Brown Corpus .
fonte
Stanford CoreNLP Tags para outros idiomas: francês, espanhol, alemão ...
Vejo que você usa o analisador para o idioma inglês, que é o modelo padrão. Você pode usar o analisador para outros idiomas (francês, espanhol, alemão ...) e esteja ciente de que os tokenizadores e parte dos marcadores de fala são diferentes para cada idioma. Se você quiser fazer isso, deverá fazer o download do modelo específico para o idioma (usando um construtor como o Maven, por exemplo) e, em seguida, definir o modelo que deseja usar. Aqui você tem mais informações sobre isso.
Aqui estão as listas de tags para diferentes idiomas:
ETIQUETAS PARA FRANCÊS:
Parte das etiquetas de fala para francês
Tags de categorias frasais para francês:
Funções sintáticas para francês:
fonte
Em spacy, foi muito rápido, eu acho, em apenas um notebook de baixo custo, ele será executado assim:
A saída em várias tentativas:
Então, acho que você não precisa se preocupar com o loop de cada verificação de tag POS :)
Mais melhorias que tive quando desabilitei um determinado pipeline:
Então, o resultado é mais rápido:
fonte