【问题标题】:Ignore punctuation symbol while giving tokens in spacy在 spacy 中给出标记时忽略标点符号
【发布时间】:2020-09-30 04:02:11
【问题描述】:

我是使用 spacy 的新手。我们可以告诉 spacy API 在提供令牌时忽略符号吗?

例子:

对于句子Hi, Welcome to StackOverflow.的记号是

Hi
,
Welcome
to
StackOverflow
.

我希望 spacy 只为有空格的单词提供标记。对于上面的例子,标记应该是

Hi,
Welcome
to
StackOverflow.

【问题讨论】:

    标签: nlp spacy


    【解决方案1】:

    试试:

    import spacy
    nlp = spacy.load("en_core_web_sm")
    txt = "Hi, Welcome to StackOverflow."
    doc = nlp(txt)
    tokens = [tok.text for tok in doc if not tok.is_punct]
    print(tokens)
    ['Hi', 'Welcome', 'to', 'StackOverflow']
    

    您可能希望定义自己的标点符号列表:

    punctuation = [".",",","!"]
    tokens = [tok.text for tok in doc if tok.text not in punctuation]
    print(tokens)
    ['Hi', 'Welcome', 'to', 'StackOverflow']
    

    或使用string 包中现成的一个:

    from string import punctuation
    print(punctuation)
    doc_punct = nlp(" ".join([punctuation]))
    tokens = [tok.text for tok in doc if tok.text not in punctuation]
    print(tokens)
    !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
    ['Hi', 'Welcome', 'to', 'StackOverflow']
    

    【讨论】:

    • 我希望列表为 ['Hi,', 'Welcome', 'to', 'StackOverflow.']。单词中应包含标点符号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2014-03-31
    • 1970-01-01
    相关资源
    最近更新 更多