代码之家  ›  专栏  ›  技术社区  ›  Programmer_nltk

使用空格法计算句子中第一个单词的词性

  •  0
  • Programmer_nltk  · 技术社区  · 6 年前

    目的是检查句子中第一个单词的词性,并使用Spacy返回其词性计数。

    迄今为止的努力:

    import spacy
    from collections import Counter
    nlp = spacy.load("en_core_web_sm")
    doc = nlp("The cat slept well. Dog is good.")
    for sent in doc.sents:
        for token in sent:
            if token.i == 0:
                c = Counter(([token.pos_ for token in sent for sent in doc.sents]))
                print (c)
    

    输出:

    Counter({'DET': 2, 'NOUN': 2, 'VERB': 2, 'ADV': 2, 'PUNCT': 2})
    

    考虑POS的“the”是DET,“Dog”是PROPN

    期望输出:

        DET: 1
        PROPN: 1
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   taha Shahed C - MSFT    6 年前

    你的 if 情况评估为 True 只有第一句话的第一个标记。这个 Counter 两次统计第一个句子标记的词性标签(即#个句子)。这就是为什么你的 柜台 输出值 2 所有标签。

    下面是你想要的代码:

    from collections import Counter
    import spacy
    
    nlp = spacy.load("en_core_web_sm")
    doc = nlp("The cat slept well. Dog is good.")
    c = Counter((sent[0].pos_ for sent in doc.sents))
    print(c)