我有一个/usr/share/dict/words
的英语单词词典
我有大量的句子,逐行。我正尝试通过与字典进行比较,以消除带有外来词和词汇表单词的这些奇怪的句子。
Master.txt
Thanks to Your Greatness (谢谢你的美好)
Himatnagar has a small Railway Station
Pu$haz Ink
有人可以帮忙吗?我尝试使用
diff
,但是它只能在单词级别而不是句子级别进行比较 最佳答案
您需要分阶段进行。
首先,使用tr
(或者也许sed
-稍慢一些但更灵活,可以更精确地删除标点符号,依此类推),将句子文件分成单词:
tr " " "\n" < hugefile | sort | uniq | grep -v -F -f dictionary > blacklist.txt
为不区分大小写,将
-i
选项添加到grep
(请参见Scott的评论)。然后,您可以使用
uniq
收集唯一的单词,并使用grep -v -F -f dictionary
获取所有不在词典中的单词。拥有此“黑名单”后,您可以请求黑名单本身中不包含任何单词的所有行。同样,您可能要考虑是否使用大写/小写:
grep -v -F -f blacklist.txt > goodlines.txt
在Python中,您可以以更有效的方式遵循相同的方法:
将字典加载到列表D中。
对于输入的巨大文件的每一行
把它分解成单词,使这个小列表变得唯一。设为W。
计算两个列表W和D的交集。
如果其长度与W的长度相同,则该行不包含未知单词。
关于python - 删除字典中所有包含单词NOT的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22416024/