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

斯帕西是“停止”不识别停止词?

  •  1
  • max  · 技术社区  · 6 年前

    当我使用spacy识别停止词时,如果我使用 en_core_web_lg 语料库,但当我使用 en_core_web_sm . 这是一个错误,还是我做错了什么?

    import spacy
    nlp = spacy.load('en_core_web_lg')
    
    doc = nlp(u'The cat ran over the hill and to my lap')
    
    for word in doc:
        print(f' {word} | {word.is_stop}')
    

    结果:

     The | False
     cat | False
     ran | False
     over | False
     the | False
     hill | False
     and | False
     to | False
     my | False
     lap | False
    

    但是,当我将此行更改为使用 恩纳-科利-韦伯斯姆 语料库,我得到不同的结果:

    nlp = spacy.load('en_core_web_sm')
    
     The | False
     cat | False
     ran | False
     over | True
     the | True
     hill | False
     and | True
     to | True
     my | True
     lap | False
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Dani Mesejo    6 年前

    你的问题是一个文件化的 bug . 建议的解决方法如下:

    import spacy
    from spacy.lang.en.stop_words import STOP_WORDS
    
    nlp = spacy.load('en_core_web_lg')
    for word in STOP_WORDS:
        for w in (word, word[0].capitalize(), word.upper()):
            lex = nlp.vocab[w]
            lex.is_stop = True
    
    doc = nlp(u'The cat ran over the hill and to my lap')
    
    for word in doc:
        print('{} | {}'.format(word, word.is_stop))
    

    产量

    The | False
    cat | False
    ran | False
    over | True
    the | True
    hill | False
    and | True
    to | True
    my | True
    lap | False
    
        2
  •  0
  •   C.Nivs    6 年前

    尝试 from spacy.lang.en.stop_words import STOP_WORDS ,然后可以显式检查单词是否在集合中

    from spacy.lang.en.stop_words import STOP_WORDS
    import spacy
    
    nlp = spacy.load('en_core_web_lg')
    
    doc = nlp(u'The cat ran over the hill and to my lap')
    
    for word in doc:
        # Have to convert Token type to String, otherwise types won't match
        print(f' {word} | {str(word) in STOP_WORDS}')
    

    输出以下内容:

    The | False
     cat | False
     ran | False
     over | True
     the | True
     hill | False
     and | True
     to | True
     my | True
     lap | False
    

    在我看来像个虫子。但是,这种方法还可以灵活地将单词添加到 STOP_WORDS 设置,如果需要的话