如何将文本行转换为有意义的单词[重复]
Posted
技术标签:
【中文标题】如何将文本行转换为有意义的单词[重复]【英文标题】:How to convert line of text into meaningful words [duplicate] 【发布时间】:2018-02-13 19:05:48 【问题描述】:我有一行字符串:
"specificationsinaccordancewithqualityaccreditedstandards"
需要拆分成分词如:
"specifications in accordance with quality accredited standards"
我试过nltk
的word_tokenize
,但无法转换,
上下文:我正在将 PDF 文档解析为文本文件,这是我从 pdf 转换器返回的文本,用于将 pdf 转换为文本我在 Python
中使用 PDFminer
【问题讨论】:
还有其他 PDF 转换器可以试试吗?它不应该像那样把所有的词都混在一起。 您很可能会遇到模棱两可的问题。例如:该字符串中的第一个单词是“specific”(后面是“at”和“ion”,都是唯一的有效单词)还是“specification”? 您是否尝试通过搜索字典中的所有单词来强制使用您的方式?很确定您可以在英语词典中找到包含所有单词的库。 是的,这就是我找到解决方案的原因,谢谢 【参考方案1】:您可以使用递归来解决这个问题。首先,您需要下载一个字典 txt 文件,您可以在此处获取该文件:https://github.com/Ajax12345/My-Python-Projects/blob/master/the_file.txt
dictionary = [i.strip('\n') for i in open('the_file.txt')]
def get_options(scrambled, flag, totals, last):
if flag:
return totals
else:
new_list = [i for i in dictionary if scrambled.startswith(i)]
if new_list:
possible_word = new_list[-1]
new_totals = totals
new_totals.append(possible_word)
new_scrambled = scrambled[len(possible_word):]
return get_options(new_scrambled, False, new_totals, possible_word)
else:
return get_options("", True, totals, '')
s = "specificationsinaccordancewithqualityaccreditedstandards"
print(' '.join(get_options(s, False, [], '')))
输出:
'specifications in accordance with quality accredited standards'
【讨论】:
这是我要找的,谢谢,字典也可以是动态的,包含我们已经找到的单词【参考方案2】:您可以使用trie
。 trie
是一种允许单词验证的数据结构。 这是一棵树,您可以在其中导航一个分支以查找有效前缀,并在您到达完整世界时收到通知。
虽然我从未“具体”使用过它,但我发现了这个 python 实现,datrie。
我的想法是导入datrie
,使用它从txt
字典(例如here)生成trie
,然后解析字符串。当您在 trie
中找到匹配项时读取每个字符的字符,如果没有找到匹配的单词,则将其添加到拆分单词字符串中。
您可以在 trie
here on wikipedia 或 in this video 上找到更多信息(这是教我 trie
是什么的人)。
【讨论】:
以上是关于如何将文本行转换为有意义的单词[重复]的主要内容,如果未能解决你的问题,请参考以下文章