gpt4 book ai didi

用于将串在一起的单词拆分为单个单词的 Python 函数

转载 作者:行者123 更新时间:2023-11-28 17:02:28 24 4
gpt4 key购买 nike

我正在尝试想出一个函数,它接受像

这样的条目

"businessidentifier", "firstname", "streetaddress"

和输出

"business identifier", "first name", "street address"

这似乎是一个涉及 NLP 的相当复杂的问题,因为该函数必须遍历字符串并针对词汇表进行测试以查看它何时到达词汇表中的单词,但对于第一个示例“businessidentifier”可能首先被视为“bus I ness identifier”。有没有人遇到过完成此任务的功能?

最佳答案

首先我们需要得到很多英文单词,我用了nltk这里。然后我将所有单词加载到 dict 中,以便所有以 'a' 开头的单词都在关键字 'a' 下的 dict eng_dict 中,以便更快地搜索单词。然后我根据长度对所有单词进行排序,这样当我们在句子中查找单词时,我们首先会尝试将其与最长的单词进行匹配,因此给定“businessidentifier”我们将首先检查“business”而不是“bus” .现在我们的单词格式很好,我们可以创建函数来将我们的句子与该单词匹配。在这里,我创建了循环函数,它试图匹配所有以与句子相同的字母开头的单词,如果我们找到一个,然后将它添加到我们的返回列表中,并循环寻找下一个。

from nltk.corpus import words
word_list = words.words()

eng_dict = {chr(i): sorted([word for word in word_list if word[0] == chr(i)], key=len, reverse=True) for i in range(ord('a'), ord('z')+1)}

def split_into_words(x):
ret = []
for word in eng_dict[x[0]]:
if x.startswith(word):
ret.append(word)
x = x[len(word):]
break
if len(x) != 0:
ret.extend(split_into_words(x))
return ret

raw_sentences = ["businessidentifier", "firstname", "streetaddress"]
finall_sentence = [split_into_words(i) for i in raw_sentences]

print(finall_sentence)

输出:

[['business', 'identifier'], ['first', 'name'], ['street', 'address']]

关于用于将串在一起的单词拆分为单个单词的 Python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53487850/

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