如何解决预处理后更新单词的字符索引
如何在更改文本后更新我的字符索引??
我正在对包含一些我想删除的内容(如 URL)的文本进行分析。
original_text = "Hello <link> world"
def preprocess(text):
text=strip_tags(text)
text=remove_url(text)
text=text.strip()
text = re.sub(' +',' ',text)
return text
text = preprocess(original_text)
和预处理后的文本是:
Hello world
然后我有我的模型,它会自动生成字符索引进行一些分析。
output = mymodel.run_analysis(text)
输出是这样的:
{
"text" : "Hello world","analysis":
[
{
"text": "Hello","start_char": 0,"end_char": 5
},{
"text": "world","start_char": 6,"end_char": 11
}
]
}
但我想在输出中也保留原始文本,还有引用原始文本的 start_char
和 end_char
,如下所示:
{
"text" : "Hello world","original_text" : "Hello <link> world","end_char": 5,"original_start_char": 0,"original_end_char": 5
},"end_char": 11,"original_start_char": 13,"original_end_char": 18
}
]
}
怎么做?也可以只将偏移量与 start_char
和 end_char
相加:重要的是在原始文本中找到单词。
我想对分析的每个元素执行 for 并在 original_text
上运行正则表达式,但很危险,因为我不想将元素与包含在例如 URL 中的子字符串匹配(例如例如如果 original_text = "Hello https://world.com world"
)
def char_regex_ascii(word):
return r"{}".format(re.escape(word))
my_regex = char_regex_ascii
for element in output["analysis"]:
word = element["text"]
r = re.compile(my_regex(word),flags=re.I | re.X | re.UNICODE)
# for each matched token in sentence
for m in r.finditer(original_text):
...
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。