我正在使用NLP进行一个聊天机器人项目。我正在使用spacy,我想在句子中得到标记的位置。目前,我正在使用以下代码
en = spacy.load("en_core_web_md")
pos_sent = "lib/lzma.py this module provides classes and convenience functions for compressing and decompressing data using the lzma compression algorithm."
pos_sent = en(pos_sent)
for token in pos_sent:
print(token, token.pos_)但这也会分裂符号上的记号,我不想要。例如,这将"lib“、"/”、"lizma.py“视为单独的标记。但在原语中,它是一个完整的词。有没有什么方法可以让我得到词性的词,而不是分裂成符号?
发布于 2022-03-22 12:44:32
好吧,你的文本并不是真正的自然语言/完整句子,所以模型不知道如何处理这条路径,把它当作两个由斜杠隔开的单词。
您可以在SpaCy中向令牌程序添加特殊规则或创建自定义令牌程序类,请参阅https://spacy.io/usage/linguistic-features#special-cases和https://spacy.io/usage/linguistic-features#native-tokenizers。不过,路径/urls可能会变得有点棘手。
或者您完全在SpaCy之外进行标记化(请参阅@Stefs注释),然后将标记前语句传递给SpaCy。如果您只需要标记化和部分语音标记,您还应该检查其他框架/方法,比如NLTK,看看它们处理它的方式是否与您想要的更相似,因为每个模型都将根据培训的方式来完成这个任务。
另外,如果您正在使用SpaCy,并将其用于聊天机器人(实时),则应该使用禁用不需要的组件来加快处理速度。
https://stackoverflow.com/questions/71569268
复制相似问题