使用 spacy 提取令牌的开始和结束索引
Extracting start and end indices of a token using spacy
我正在查看很多句子,并希望提取给定句子中单词的开始和结束索引。
例如输入如下:
“这是一个以英语为母语的人用英语写的句子。”
我想要的是单词 'English' 的跨度,在这种情况下是:(30,37) 和 (50, 57)。
注意:我被指向这个答案 ()
但是这个答案并没有解决我的问题。它可以帮助我获取令牌的起始字符而不是结束索引。
感谢所有帮助
你可以用 re in pure python:
s="This is a sentence written in english by a native English speaker."
import re
[(i.start(), i.end()) for i in re.finditer('ENGLISH', s.upper())]
#output
[(30, 37), (50, 57)]
你也可以在 spacy 中做:
import spacy
nlp=spacy.load("en_core_web_sm")
doc=nlp("This is a sentence written in english by a native English speaker.")
for ent in doc.ents:
if ent.text.upper()=='ENGLISH':
print(ent.start_char,ent.end_char)
使用你link答案中的想法,你可以做这样的事情
from spacy.lang.en import English
nlp = English()
s = nlp("This is a sentence written in english by a native English speaker")
boundaries = []
for idx, i in enumerate(s[:-1]):
if i.text.lower() == "english":
boundaries.append((i.idx, s[idx+1].idx-1))
我正在查看很多句子,并希望提取给定句子中单词的开始和结束索引。
例如输入如下:
“这是一个以英语为母语的人用英语写的句子。”
我想要的是单词 'English' 的跨度,在这种情况下是:(30,37) 和 (50, 57)。
注意:我被指向这个答案 (
但是这个答案并没有解决我的问题。它可以帮助我获取令牌的起始字符而不是结束索引。
感谢所有帮助
你可以用 re in pure python:
s="This is a sentence written in english by a native English speaker."
import re
[(i.start(), i.end()) for i in re.finditer('ENGLISH', s.upper())]
#output
[(30, 37), (50, 57)]
你也可以在 spacy 中做:
import spacy
nlp=spacy.load("en_core_web_sm")
doc=nlp("This is a sentence written in english by a native English speaker.")
for ent in doc.ents:
if ent.text.upper()=='ENGLISH':
print(ent.start_char,ent.end_char)
使用你link答案中的想法,你可以做这样的事情
from spacy.lang.en import English
nlp = English()
s = nlp("This is a sentence written in english by a native English speaker")
boundaries = []
for idx, i in enumerate(s[:-1]):
if i.text.lower() == "english":
boundaries.append((i.idx, s[idx+1].idx-1))