【发布时间】:2020-09-30 04:02:11
【问题描述】:
我是使用 spacy 的新手。我们可以告诉 spacy API 在提供令牌时忽略符号吗?
例子:
对于句子Hi, Welcome to StackOverflow.的记号是
Hi
,
Welcome
to
StackOverflow
.
我希望 spacy 只为有空格的单词提供标记。对于上面的例子,标记应该是
Hi,
Welcome
to
StackOverflow.
【问题讨论】:
我是使用 spacy 的新手。我们可以告诉 spacy API 在提供令牌时忽略符号吗?
例子:
对于句子Hi, Welcome to StackOverflow.的记号是
Hi
,
Welcome
to
StackOverflow
.
我希望 spacy 只为有空格的单词提供标记。对于上面的例子,标记应该是
Hi,
Welcome
to
StackOverflow.
【问题讨论】:
试试:
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']
【讨论】: