gpt4 book ai didi

python - 我想从 Python 3.x 的句子中删除非英语单词

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:06 24 4
gpt4 key购买 nike

我有很多用户查询。其中某些查询也包含垃圾字符,例如。 我在 Google asdasb asnlkasn 工作我只需要我在 Google 工作

import nltk
import spacy
import truecase
words = set(nltk.corpus.words.words())
nlp = spacy.load('en_core_web_lg')

def check_ner(word):
doc = nlp(word)
ner_list = []
for token in doc.ents:
ner_list.append(token.text)
return ner_list



sent = "I work in google asdasb asnlkasn"
sent = truecase.get_true_case(sent)
ner_list = check_ner(sent)

final_sent = " ".join(w for w in nltk.wordpunct_tokenize(sent)if w.lower() in words or not
w.isalpha() or w in ner_list)

我尝试了此操作,但这并没有删除字符,因为 ner 正在将 google asdasb asnlkasn 检测为 Work_of_Art 或有时将 asdasb asnlkasn 检测为 Person 。我必须包含 ner,因为 words = set(nltk.corpus.words.words()) 语料库中没有 Google、Microsoft、Apple 等或任何其他 NER 值。

最佳答案

您可以使用它来识别您的非单词。

words = set(nltk.corpus.words.words())

sent = "I work in google asdasb asnlkasn"
" ".join(w for w in nltk.wordpunct_tokenize(sent) \
if w.lower() in words or not w.isalpha())

尝试使用这个。感谢@DYZ answer .

但是,既然您说您需要 Google、苹果等的 NER,并且这会导致识别不正确,您可以做的是使用束解析计算 NER 的这些预测的分数。然后,您可以使用这些分数来设置 NER 可接受值的阈值,并将低于该值的阈值删除。我相信这些无意义的词在分类时会获得较低的概率分数,例如“人”,如果您不需要它们,您可以完全删除“艺术品”等类别。

使用 beamparse 进行评分的示例:

import spacy
import sys
from collections import defaultdict

nlp = spacy.load(output_dir)
print("Loaded model '%s'" % output_dir)
text = u'I work in Google asdasb asnlkasn'


with nlp.disable_pipes('ner'):
doc = nlp(text)


threshold = 0.2
(beams) = nlp.entity.beam_parse([ doc ], beam_width = 16, beam_density = 0.0001)

entity_scores = defaultdict(float)
for beam in beams:
for score, ents in nlp.entity.moves.get_beam_parses(beam):
for start, end, label in ents:
entity_scores[(start, end, label)] += score

print ('Entities and scores (detected with beam search)')
for key in entity_scores:
start, end, label = key
score = entity_scores[key]
if ( score > threshold):
print ('Label: {}, Text: {}, Score: {}'.format(label, doc[start:end], score))

它在我的测试中有效,但 NER 未能识别这一点。

关于python - 我想从 Python 3.x 的句子中删除非英语单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59301446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com