Java Stanford NLP:词性标签是什么?

185

斯坦福自然语言处理演示在这里。它的输出如下:

Colorless/JJ green/JJ ideas/NNS sleep/VBP furiously/RB ./.

词性标注的含义是什么?我找不到官方列表。这是斯坦福自己的系统,还是他们使用通用标签?(例如,JJ是什么?)

另外,当我遍历句子时,寻找名词等时,我最终会做一些类似于检查标签.contains('N')的事情。这感觉相当薄弱。有没有更好的编程方法来搜索特定的词性?


这可能是一个小问题,但你应该使用.starts_with('N')而不是contains,因为'IN'和'VBN'也包含'N'。这可能是找出标记器认为是名词的单词的最佳方法。 - Joseph
10个回答

289

宾州树库计划。查看词性标注

JJ是形容词;NNS是名词的复数形式;VBP是动词现在时态;RB是副词。

以上为英文语言的解释,中文则使用宾州中文树库,而德语则使用NEGRA语料库。

  1. CC 并列连词
  2. CD 基数
  3. DT 限定词
  4. EX 存在句
  5. FW 外来语
  6. IN 介词或从属连接词
  7. JJ 形容词
  8. JJR 形容词比较级
  9. JJS 形容词最高级
  10. LS 列表项标记
  11. MD 情态动词
  12. NN 名词单数或集体名词
  13. NNS 名词复数
  14. NNP 专有名词单数
  15. NNPS 专有名词复数
  16. PDT 前位限定语
  17. POS 所有格结束标记
  18. PRP 人称代词
  19. PRP$ 物主代词
  20. RB 副词
  21. RBR 副词比较级
  22. RBS 副词最高级
  23. RP 小品词
  24. SYM 符号
  25. TO 至(表示动作行为的目的地)
  26. UH 感叹词
  27. VB 动词原形
  28. VBD 动词过去式
  • VBG动词,动名词或现在分词
  • VBN动词过去分词
  • VBP动词非第三人称单数现在时
  • VBZ动词第三人称单数现在时
  • WDT Wh­-determiner疑问限定词
  • WP Wh­-代词疑问代词
  • WP$ Wh­-所有格代词疑问所有格代词
  • WRB Wh­-副词疑问副词

  • 3
    第十任立法会是什么? - Devavrata
    4
    “to”必须是特殊的。它有自己的标签。 - quemeful
    4
    这是关于词性标记的一份非常好的参考资料,作者是Erwin R. Komen。您可以访问他的网站 http://erwinkomen.ruhosting.nl 查看他的相关研究和主页。 - CoolHandLouis
    1
    斯坦福POS标注器和宾州树库中使用的标签是否相同? - gokul_uf
    1
    @gokul_uf 不,它们并不完全相同。StanfordCoreNLP有时会返回FRAG标签。我发现的其他标签是-LRB-和-RRB-(方括号),但只需要一个就足以说明没有1:1的对应关系。 - Kyordhel
    显示剩余2条评论

    120
    Explanation of each tag from the documentation :
    
    CC: conjunction, coordinating
        & 'n and both but either et for less minus neither nor or plus so
        therefore times v. versus vs. whether yet
    CD: numeral, cardinal
        mid-1890 nine-thirty forty-two one-tenth ten million 0.5 one forty-
        seven 1987 twenty '79 zero two 78-degrees eighty-four IX '60s .025
        fifteen 271,124 dozen quintillion DM2,000 ...
    DT: determiner
        all an another any both del each either every half la many much nary
        neither no some such that the them these this those
    EX: existential there
        there
    FW: foreign word
        gemeinschaft hund ich jeux habeas Haementeria Herr K'ang-si vous
        lutihaw alai je jour objets salutaris fille quibusdam pas trop Monte
        terram fiche oui corporis ...
    IN: preposition or conjunction, subordinating
        astride among uppon whether out inside pro despite on by throughout
        below within for towards near behind atop around if like until below
        next into if beside ...
    JJ: adjective or numeral, ordinal
        third ill-mannered pre-war regrettable oiled calamitous first separable
        ectoplasmic battery-powered participatory fourth still-to-be-named
        multilingual multi-disciplinary ...
    JJR: adjective, comparative
        bleaker braver breezier briefer brighter brisker broader bumper busier
        calmer cheaper choosier cleaner clearer closer colder commoner costlier
        cozier creamier crunchier cuter ...
    JJS: adjective, superlative
        calmest cheapest choicest classiest cleanest clearest closest commonest
        corniest costliest crassest creepiest crudest cutest darkest deadliest
        dearest deepest densest dinkiest ...
    LS: list item marker
        A A. B B. C C. D E F First G H I J K One SP-44001 SP-44002 SP-44005
        SP-44007 Second Third Three Two * a b c d first five four one six three
        two
    MD: modal auxiliary
        can cannot could couldn't dare may might must need ought shall should
        shouldn't will would
    NN: noun, common, singular or mass
        common-carrier cabbage knuckle-duster Casino afghan shed thermostat
        investment slide humour falloff slick wind hyena override subhumanity
        machinist ...
    NNS: noun, common, plural
        undergraduates scotches bric-a-brac products bodyguards facets coasts
        divestitures storehouses designs clubs fragrances averages
        subjectivists apprehensions muses factory-jobs ...
    NNP: noun, proper, singular
        Motown Venneboerger Czestochwa Ranzer Conchita Trumplane Christos
        Oceanside Escobar Kreisler Sawyer Cougar Yvette Ervin ODI Darryl CTCA
        Shannon A.K.C. Meltex Liverpool ...
    NNPS: noun, proper, plural
        Americans Americas Amharas Amityvilles Amusements Anarcho-Syndicalists
        Andalusians Andes Andruses Angels Animals Anthony Antilles Antiques
        Apache Apaches Apocrypha ...
    PDT: pre-determiner
        all both half many quite such sure this
    POS: genitive marker
        ' 's
    PRP: pronoun, personal
        hers herself him himself hisself it itself me myself one oneself ours
        ourselves ownself self she thee theirs them themselves they thou thy us
    PRP$: pronoun, possessive
        her his mine my our ours their thy your
    RB: adverb
        occasionally unabatingly maddeningly adventurously professedly
        stirringly prominently technologically magisterially predominately
        swiftly fiscally pitilessly ...
    RBR: adverb, comparative
        further gloomier grander graver greater grimmer harder harsher
        healthier heavier higher however larger later leaner lengthier less-
        perfectly lesser lonelier longer louder lower more ...
    RBS: adverb, superlative
        best biggest bluntest earliest farthest first furthest hardest
        heartiest highest largest least less most nearest second tightest worst
    RP: particle
        aboard about across along apart around aside at away back before behind
        by crop down ever fast for forth from go high i.e. in into just later
        low more off on open out over per pie raising start teeth that through
        under unto up up-pp upon whole with you
    SYM: symbol
        % & ' '' ''. ) ). * + ,. < = > @ A[fj] U.S U.S.S.R * ** ***
    TO: "to" as preposition or infinitive marker
        to
    UH: interjection
        Goodbye Goody Gosh Wow Jeepers Jee-sus Hubba Hey Kee-reist Oops amen
        huh howdy uh dammit whammo shucks heck anyways whodunnit honey golly
        man baby diddle hush sonuvabitch ...
    VB: verb, base form
        ask assemble assess assign assume atone attention avoid bake balkanize
        bank begin behold believe bend benefit bevel beware bless boil bomb
        boost brace break bring broil brush build ...
    VBD: verb, past tense
        dipped pleaded swiped regummed soaked tidied convened halted registered
        cushioned exacted snubbed strode aimed adopted belied figgered
        speculated wore appreciated contemplated ...
    VBG: verb, present participle or gerund
        telegraphing stirring focusing angering judging stalling lactating
        hankerin' alleging veering capping approaching traveling besieging
        encrypting interrupting erasing wincing ...
    VBN: verb, past participle
        multihulled dilapidated aerosolized chaired languished panelized used
        experimented flourished imitated reunifed factored condensed sheared
        unsettled primed dubbed desired ...
    VBP: verb, present tense, not 3rd person singular
        predominate wrap resort sue twist spill cure lengthen brush terminate
        appear tend stray glisten obtain comprise detest tease attract
        emphasize mold postpone sever return wag ...
    VBZ: verb, present tense, 3rd person singular
        bases reconstructs marks mixes displeases seals carps weaves snatches
        slumps stretches authorizes smolders pictures emerges stockpiles
        seduces fizzes uses bolsters slaps speaks pleads ...
    WDT: WH-determiner
        that what whatever which whichever
    WP: WH-pronoun
        that what whatever whatsoever which who whom whosoever
    WP$: WH-pronoun, possessive
        whose
    WRB: Wh-adverb
        how however whence whenever where whereby whereever wherein whereof why
    

    3
    请问你能否提供出处? - David Portabella
    标点符号怎么办?例如,','标记得到PoS ','。是否有包括这些PoS的列表? - David Portabella
    关于左括号符号“-LRB-”的POS是什么? - David Portabella

    34
    上面的被接受的答案缺少以下信息:
    还有9个标点符号标签定义(某些参考资料中未列出,见此处)。它们是:
    1. #
    2. $
    3. ''(用于所有形式的闭引号)
    4. ((用于所有形式的开括号)
    5. )(用于所有形式的闭括号)
    6. 。 (用于句子结尾的标点符号)
    7. :(用于冒号、分号和省略号)
    8. ``(用于所有形式的开引号)

    17

    2
    你知道吗?这才是人们真正需要的列表!不仅仅是Penn Treebank词性标记,因为那只是针对单词的。 - windweller
    你能否在缩写旁边添加描述? - Petrus Theron

    13

    编码:

    /**
     * Represents the English parts-of-speech, encoded using the
     * de facto <a href="http://www.cis.upenn.edu/~treebank/">Penn Treebank
     * Project</a> standard.
     * 
     * @see <a href="ftp://ftp.cis.upenn.edu/pub/treebank/doc/tagguide.ps.gz">Penn Treebank Specification</a>
     */
    public enum PartOfSpeech {
      ADJECTIVE( "JJ" ),
      ADJECTIVE_COMPARATIVE( ADJECTIVE + "R" ),
      ADJECTIVE_SUPERLATIVE( ADJECTIVE + "S" ),
    
      /* This category includes most words that end in -ly as well as degree
       * words like quite, too and very, posthead modi ers like enough and
       * indeed (as in good enough, very well indeed), and negative markers like
       * not, n't and never.
       */
      ADVERB( "RB" ),
      
      /* Adverbs with the comparative ending -er but without a strictly comparative
       * meaning, like <i>later</i> in <i>We can always come by later</i>, should
       * simply be tagged as RB.
       */
      ADVERB_COMPARATIVE( ADVERB + "R" ),
      ADVERB_SUPERLATIVE( ADVERB + "S" ),
      
      /* This category includes how, where, why, etc.
       */
      ADVERB_WH( "W" + ADVERB ),
    
      /* This category includes and, but, nor, or, yet (as in Y et it's cheap,
       * cheap yet good), as well as the mathematical operators plus, minus, less,
       * times (in the sense of "multiplied by") and over (in the sense of "divided
       * by"), when they are spelled out. <i>For</i> in the sense of "because" is
       * a coordinating conjunction (CC) rather than a subordinating conjunction.
       */
      CONJUNCTION_COORDINATING( "CC" ),
      CONJUNCTION_SUBORDINATING( "IN" ),
      CARDINAL_NUMBER( "CD" ),
      DETERMINER( "DT" ),
      
      /* This category includes which, as well as that when it is used as a
       * relative pronoun.
       */
      DETERMINER_WH( "W" + DETERMINER ),
      EXISTENTIAL_THERE( "EX" ),
      FOREIGN_WORD( "FW" ),
    
      LIST_ITEM_MARKER( "LS" ),
      
      NOUN( "NN" ),
      NOUN_PLURAL( NOUN + "S" ),
      NOUN_PROPER_SINGULAR( NOUN + "P" ),
      NOUN_PROPER_PLURAL( NOUN + "PS" ),
    
      PREDETERMINER( "PDT" ),
      POSSESSIVE_ENDING( "POS" ),
    
      PRONOUN_PERSONAL( "PRP" ),
      PRONOUN_POSSESSIVE( "PRP$" ),
      
      /* This category includes the wh-word whose.
       */
      PRONOUN_POSSESSIVE_WH( "WP$" ),
      
      /* This category includes what, who and whom.
       */
      PRONOUN_WH( "WP" ),
    
      PARTICLE( "RP" ),
      
      /* This tag should be used for mathematical, scientific and technical symbols
       * or expressions that aren't English words. It should not used for any and
       * all technical expressions. For instance, the names of chemicals, units of
       * measurements (including abbreviations thereof) and the like should be
       * tagged as nouns.
       */
      SYMBOL( "SYM" ),
      TO( "TO" ),
      
      /* This category includes my (as in M y, what a gorgeous day), oh, please,
       * see (as in See, it's like this), uh, well and yes, among others.
       */
      INTERJECTION( "UH" ),
    
      VERB( "VB" ),
      VERB_PAST_TENSE( VERB + "D" ),
      VERB_PARTICIPLE_PRESENT( VERB + "G" ),
      VERB_PARTICIPLE_PAST( VERB + "N" ),
      VERB_SINGULAR_PRESENT_NONTHIRD_PERSON( VERB + "P" ),
      VERB_SINGULAR_PRESENT_THIRD_PERSON( VERB + "Z" ),
    
      /* This category includes all verbs that don't take an -s ending in the
       * third person singular present: can, could, (dare), may, might, must,
       * ought, shall, should, will, would.
       */
      VERB_MODAL( "MD" ),
    
      /* Stanford.
       */
      SENTENCE_TERMINATOR( "." );
    
      private final String tag;
    
      private PartOfSpeech( String tag ) {
        this.tag = tag;
      }
    
      /**
       * Returns the encoding for this part-of-speech.
       * 
       * @return A string representing a Penn Treebank encoding for an English
       * part-of-speech.
       */
      public String toString() {
        return getTag();
      }
      
      protected String getTag() {
        return this.tag;
      }
    
      public static PartOfSpeech get( String value ) {
        for( PartOfSpeech v : values() ) {
          if( value.equals( v.getTag() ) ) {
            return v;
          }
        }
        
        throw new IllegalArgumentException( "Unknown part of speech: '" + value + "'." );
      }
    }
    

    7
    我在这里提供整个列表,同时也提供参考链接。
    1.  CC   Coordinating conjunction
    2.  CD   Cardinal number
    3.  DT   Determiner
    4.  EX   Existential there
    5.  FW   Foreign word
    6.  IN   Preposition or subordinating conjunction
    7.  JJ   Adjective
    8.  JJR  Adjective, comparative
    9.  JJS  Adjective, superlative
    10. LS   List item marker
    11. MD   Modal
    12. NN   Noun, singular or mass
    13. NNS  Noun, plural
    14. NNP  Proper noun, singular
    15. NNPS Proper noun, plural
    16. PDT  Predeterminer
    17. POS  Possessive ending
    18. PRP  Personal pronoun
    19. PRP$ Possessive pronoun
    20. RB   Adverb
    21. RBR  Adverb, comparative
    22. RBS  Adverb, superlative
    23. RP   Particle
    24. SYM  Symbol
    25. TO   to
    26. UH   Interjection
    27. VB   Verb, base form
    28. VBD  Verb, past tense
    29. VBG  Verb, gerund or present participle
    30. VBN  Verb, past participle
    31. VBP  Verb, non-3rd person singular present
    32. VBZ  Verb, 3rd person singular present
    33. WDT  Wh-determiner
    34. WP   Wh-pronoun
    35. WP$  Possessive wh-pronoun
    36. WRB  Wh-adverb
    

    你可以在这里找到完整的词性标注列表

    4

    关于您的第二个问题,查找特定POS(例如名词)标记的单词/块,以下是您可以参考的示例代码。

    public static void main(String[] args) {
        Properties properties = new Properties();
        properties.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse");
        StanfordCoreNLP pipeline = new StanfordCoreNLP(properties);
    
        String input = "Colorless green ideas sleep furiously.";
        Annotation annotation = pipeline.process(input);
        List<CoreMap> sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class);
        List<String> output = new ArrayList<>();
        String regex = "([{pos:/NN|NNS|NNP/}])"; //Noun
        for (CoreMap sentence : sentences) {
            List<CoreLabel> tokens = sentence.get(CoreAnnotations.TokensAnnotation.class);
            TokenSequencePattern pattern = TokenSequencePattern.compile(regex);
            TokenSequenceMatcher matcher = pattern.getMatcher(tokens);
            while (matcher.find()) {
                output.add(matcher.group());
            }
        }
        System.out.println("Input: "+input);
        System.out.println("Output: "+output);
    }
    

    输出结果为:
    Input: Colorless green ideas sleep furiously.
    Output: [ideas]
    

    2

    14
    不,它们是Penn English Treebank词性标注,这是Brown语料库标记集的简化版。 - Christopher Manning
    你确定吗?上面引用的例子包含一个在布朗语料库中定义但不在宾州树库标签列表中定义的“.”标记,因此似乎可以肯定的是,答案至少不像他们只是宾州树库标签那么简单。 - Jules
    经过进一步的研究,发现它们确实是Penn Treebank标签,但上述关于这些标签的文档不完整:Penn Treebank标签还包括9个标点符号标签,这些标签在已接受答案的列表中被省略了。请参阅我的其他答案以获取更多详细信息。 - Jules

    1

    斯坦福CoreNLP标签用于其他语言:法语、西班牙语、德语等...

    我看到你使用了英语语言的解析器,这是默认模型。 你可以使用其他语言(法语、西班牙语、德语等)的解析器,并且请注意,每种语言的分词器和词性标注器都不同。如果你想这样做,你必须下载特定语言的模型(例如使用Maven构建器),然后设置你想要使用的模型。 在这里 你可以找到更多相关信息。

    这里列出了不同语言的标签列表:

    1. 西班牙语的斯坦福CoreNLP词性标注
    2. 德语的斯坦福CoreNLP词性标注器使用斯图加特-图宾根标记集(STTS)
    3. 法语的斯坦福CoreNLP词性标注器使用以下标签:

    法语标签:

    法语词性标注

    A     (adjective)
    Adv   (adverb)
    CC    (coordinating conjunction)
    Cl    (weak clitic pronoun)
    CS    (subordinating conjunction)
    D     (determiner)
    ET    (foreign word)
    I     (interjection)
    NC    (common noun)
    NP    (proper noun)
    P     (preposition)
    PREF  (prefix)
    PRO   (strong pronoun)
    V     (verb)
    PONCT (punctuation mark)
    

    法语短语类别标签:

    AP     (adjectival phrases)
    AdP    (adverbial phrases)
    COORD  (coordinated phrases)
    NP     (noun phrases)
    PP     (prepositional phrases)
    VN     (verbal nucleus)
    VPinf  (infinitive clauses)
    VPpart (nonfinite clauses)
    SENT   (sentences)
    Sint, Srel, Ssub (finite clauses)
    

    法语的句法功能:

    SUJ    (subject)
    OBJ    (direct object)
    ATS    (predicative complement of a subject)
    ATO    (predicative complement of a direct object)
    MOD    (modifier or adjunct)
    A-OBJ  (indirect complement introduced by à)
    DE-OBJ (indirect complement introduced by de)
    P-OBJ  (indirect complement introduced by another preposition)
    

    @AMArostegui:谢谢您的提示。请分享一个链接,明确说明通用依存关系在西班牙语中是如何被使用的。该链接是为UD准备的,但是Stanford Core NLP中没有任何提示表明它们实际上被用于西班牙语,并且斯坦福的官方文档也没有提到它。 - Catalina Chircu

    0
    在Spacy中,速度非常快,我认为即使在低端笔记本电脑上运行也会像这样:
    import spacy
    import time
    
    start = time.time()
    
    with open('d:/dictionary/e-store.txt') as f:
        input = f.read()
    
    word = 0
    result = []
    
    nlp = spacy.load("en_core_web_sm")
    doc = nlp(input)
    
    for token in doc:
        if token.pos_ == "NOUN":
            result.append(token.text)
        word += 1
    
    elapsed = time.time() - start
    
    print("From", word, "words, there is", len(result), "NOUN found in", elapsed, "seconds")
    

    多次试验的输出:

    From 3547 words, there is 913 NOUN found in 7.768507719039917 seconds
    From 3547 words, there is 913 NOUN found in 7.408619403839111 seconds
    From 3547 words, there is 913 NOUN found in 7.431427955627441 seconds
    

    所以,我认为您不需要担心循环每个 POS 标记检查 :)

    当禁用某些管道时,我得到了更多的改进:

    nlp = spacy.load("en_core_web_sm", disable = 'ner')
    

    所以,结果更快:

    From 3547 words, there is 913 NOUN found in 6.212834596633911 seconds
    From 3547 words, there is 913 NOUN found in 6.257707595825195 seconds
    From 3547 words, there is 913 NOUN found in 6.371225833892822 seconds
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接