避免 <sos> 和 <eos> 被 Spacy 解析
Avoiding <sos> and <eos> being parsed by Spacy
我被一个基本的东西困住了,但我不知道如何让它工作。如果这是超级基本的东西,我深表歉意。只是我对 Spacy 很陌生,不知道该怎么做。也无法在互联网上找到任何资源。
我有一堆这样的句子
a = "<sos> Hello There! <eos>"
我正在使用以下代码行使用 Spacy 对其进行标记化
import spacy
nlp = spacy.load('en_core_web_sm')
for token in nlp(a):
print(token.text)
打印的内容是这样的
<
sos
>
Hello
There
!
<
eos
>
如您所见,它解析了 <sos>
和 <eos>
元标记。我怎样才能避免这种情况?我希望看到的输出类似于以下内容
<sos>
Hello
There
!
<eos>
我不知道如何做到这一点。任何帮助都会很棒。
提前致谢
在 spaCy 中,分词器会在拆分文本之前检查异常。
您需要向 tokenizer 添加一个例外,以将您的符号视为完整标记。
您的代码应如下所示:
import spacy
from spacy.attrs import ORTH, LEMMA
sent = "<sos> Hello There! <eos>"
nlp = spacy.load('en_core_web_sm')
nlp.tokenizer.add_special_case('<sos>', [{ORTH: "<sos>"}])
nlp.tokenizer.add_special_case('<eos>', [{ORTH: "<eos>"}])
for token in nlp(sent):
print(token.text)
您可以在此处阅读更多相关信息:
https://spacy.io/api/tokenizer#add_special_case
我被一个基本的东西困住了,但我不知道如何让它工作。如果这是超级基本的东西,我深表歉意。只是我对 Spacy 很陌生,不知道该怎么做。也无法在互联网上找到任何资源。
我有一堆这样的句子
a = "<sos> Hello There! <eos>"
我正在使用以下代码行使用 Spacy 对其进行标记化
import spacy
nlp = spacy.load('en_core_web_sm')
for token in nlp(a):
print(token.text)
打印的内容是这样的
<
sos
>
Hello
There
!
<
eos
>
如您所见,它解析了 <sos>
和 <eos>
元标记。我怎样才能避免这种情况?我希望看到的输出类似于以下内容
<sos>
Hello
There
!
<eos>
我不知道如何做到这一点。任何帮助都会很棒。
提前致谢
在 spaCy 中,分词器会在拆分文本之前检查异常。 您需要向 tokenizer 添加一个例外,以将您的符号视为完整标记。
您的代码应如下所示:
import spacy
from spacy.attrs import ORTH, LEMMA
sent = "<sos> Hello There! <eos>"
nlp = spacy.load('en_core_web_sm')
nlp.tokenizer.add_special_case('<sos>', [{ORTH: "<sos>"}])
nlp.tokenizer.add_special_case('<eos>', [{ORTH: "<eos>"}])
for token in nlp(sent):
print(token.text)
您可以在此处阅读更多相关信息: https://spacy.io/api/tokenizer#add_special_case