9
votes

Chunking du texte avec le Stanford-NLP

J'utilise le NLP de Stanford Core et j'utilise cette ligne pour charger certains modules pour traiter mon texte: xxx

est un module que je peux charger pour chunnks le texte? < / p>

ou toute suggestion avec une manière altérée d'utiliser le noyau Stanford pour calculer du texte?

merci


2 commentaires

Par "CHUNKING" SOUMISSEZ-VOUS SENTILIER DES CHARGES DES CHARGES DE BASE NP ET DES GROUPES VERBES? Ou êtes-vous de confiance en divisant un texte important en segments, tels que des groupements de texte associés tels que des commentaires individuels de blog?


J'ai exactement la même question; Dans mon cas, je veux dire extraire des phrases nominales par exemple


4 Réponses :


5
votes

Je pense que la sortie d'analyse peut être utilisée pour obtenir des morceaux NP. Jetez un coup d'œil à la représentation sans contexte sur le Stanford Parser qui fournit des exemples de sortie. < / p>


0 commentaires

5
votes

Pour utiliser des chunking avec Stanford NLP, vous pouvez utiliser les packages suivants:

  • Yamcha: Chubleur NP-Basé SVM, également utilisable pour le marquage de POS, NER, etc. C / C ++ Open Source. Won Congll 2000 tâche partagée. (Moins automatique qu'un étiquette de point de vente spécialisé pour un utilisateur final.)
  • MARK GREENWOOD'S Noun Phrase Chinker: une réimplémentation Java de Ramshaw et Marcus (1995).
  • FNTBL: une mise en œuvre rapide et flexible de l'apprentissage basé sur la transformation en C ++. Comprend un tagueur de point de vente, mais aussi des chunking NP et des modèles de chunking généraux.

    Source: http://www-nlp.stanford.edu/links/statnlp.html#npchunk


1 commentaires

Ce ne sont que des forfaits pour faire des chunking np. Par exemple: Mark Greenwood's Noun Phrase Chinker, fournit une enveloppe de porte, mais pas d'emballage pour l'utilisation de l'arbre d'analyse Stanfordnlp, etc. Je pense que l'on peut faire des chunking basés surgènes au moins - il peut y avoir un annoteur de morceau sur mesure qui ajoute au pipeline. Dites une annotateur personnalisée à l'aide de Tokenregex sur POS, placez après "parse" dans le pipeline. Telles que l'arbre d'analyse peut avoir un noeud supplémentaire «NNP» sous lequel les jetons punkés sont là. J'espère que quelqu'un l'a fait quelque part pour Corenlp.



1
votes

Ce dont vous avez besoin est la sortie de circonscription à l'analyse à Corenlp, ce qui vous donne les informations sur les chunks par exemple. Phrases verbales (VPS,) noms de nom (NPS,) et etc. Au mieux de mes connaissances, il n'y a aucune méthode à Corenlp pour vous donner une liste de morceaux. Cela signifie que vous devez analyser la production réelle de l'analyse de la circonscription pour extraire les morceaux.

Par exemple, il s'agit de la sortie de l'analyseur de circonscription de corenlp pour une phrase d'échantillon: xxx

comme vous le voyez, il y a des balises NP et VP dans la chaîne, maintenant Vous devez aller et extraire le texte réel des morceaux en analysant cette chaîne. Faites-moi savoir si vous pouviez trouver une méthode qui vous donne la liste des morceaux ?!


0 commentaires

0
votes

En développant la réponse de Pedram, le code ci-dessous peut être utilisé:

from nltk.parse.corenlp import CoreNLPParser
nlp = CoreNLPParser('http://localhost:9000')  # Assuming CoreNLP server is running locally at port 9000


def extract_phrase(trees, labels):
    phrases = []
    for tree in trees:
        for subtree in tree.subtrees():
            if subtree.label() in labels:
                t = subtree
                t = ' '.join(t.leaves())
                phrases.append(t)
    return phrases


def get_chunks(sentence):
    trees = next(nlp.raw_parse(sentence))
    nps = extract_phrase(trees, ['NP', 'CC'])
    vps = extract_phrase(trees, ['VP'])
    return trees, nps, vps


if __name__ == '__main__':
    dialog = [
        "Anarchism is a political philosophy that advocates self-governed societies based on voluntary cooperative institutions rejecting unjust hierarchy"
    ]
    for sentence in dialog:
        trees, nps, vps = get_chunks(sentence)
        print("\n\n")
        print("Sentence: ", sentence)
        print("Tree:\n", trees)
        print("Noun Phrases: ", nps)
        print("Verb Phrases: ", vps)

"""
Sentence:  Anarchism is a political philosophy that advocates self-governed societies based on voluntary cooperative institutions rejecting unjust hierarchy
Tree:
 (ROOT
  (S
    (NP (NN Anarchism))
    (VP
      (VBZ is)
      (NP
        (NP (DT a) (JJ political) (NN philosophy))
        (SBAR
          (WHNP (WDT that))
          (S
            (VP
              (VBZ advocates)
              (NP
                (ADJP (NN self) (HYPH -) (VBN governed))
                (NNS societies))
              (PP
                (VBN based)
                (PP
                  (IN on)
                  (NP
                    (NP
                      (JJ voluntary)
                      (JJ cooperative)
                      (NNS institutions))
                    (VP
                      (VBG rejecting)
                      (NP (JJ unjust) (NN hierarchy)))))))))))))
Noun Phrases:  ['Anarchism', 'a political philosophy that advocates self - governed societies based on voluntary cooperative institutions rejecting unjust hierarchy', 'a political philosophy', 'self - governed societies', 'voluntary cooperative institutions rejecting unjust hierarchy', 'voluntary cooperative institutions', 'unjust hierarchy']
Verb Phrases:  ['is a political philosophy that advocates self - governed societies based on voluntary cooperative institutions rejecting unjust hierarchy', 'advocates self - governed societies based on voluntary cooperative institutions rejecting unjust hierarchy', 'rejecting unjust hierarchy']

"""


0 commentaires