【问题标题】:Removing non-english words from a sentence in python从python中的句子中删除非英语单词
【发布时间】:2010-10-27 09:11:12
【问题描述】:

我编写了一个代码,它向 Google 发送查询并返回结果。我从这些结果中提取 sn-ps(summaries) 以进行进一步处理。但是,有时非英语单词会出现在这些我不想要的 sn-ps 中。例如:

/\u02b0w\u025bn w\u025bn unstressed \u02b0w\u0259n w\u0259n/ 

我只想要这句话中的“未重读”这个词。 我怎样才能做到这一点? 谢谢

【问题讨论】:

  • 那段文字没有任何意义。
  • 您想要实际的英语词典单词,还是只包含其中只有 ASCII 字符的单词(即使它们是诸如名称或地点之类的专有名词,或者拼写错误的英语单词)?跨度>
  • @Glenn:这些是 unicode 格式的单词
  • @delty:ASCII 字符很好。但我试图将它们编码为 ascii,但没有用......
  • @detly:英文单词可以包含非ASCII字符(piñata, étude);你可能是指非拉丁字符。

标签: python unicode non-english


【解决方案1】:

PyEnchant 对您来说可能是一个简单的选择。我不知道它的速度,但你可以这样做:

>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.check("Hello")
True
>>> d.check("Helo")
False
>>>

找到了一个教程here,它还具有返回建议的选项,您可以再次查询这些建议或其他内容。此外,您可以检查您的结果是否为 latin-1 (is_utf8() excists,不知道 is_latin-1() 是否也存在,也许使用类似Enca 的东西来检测文本文件的编码,基于了解他们的语言。)

【讨论】:

  • 这是否也允许使用标点符号和特殊字符?这个想法是检查非英语文本
【解决方案2】:

您可以将收到的单词与英语单词词典进行比较,例如 BSD 系统上的 /usr/share/dict/words。

我猜大部分 google 的结果在语法上是正确的,但如果不是,您可能需要查看词干以匹配您的字典。

【讨论】:

  • 撇开 Google 的结果来自互联网,因此在语法上充其量是可疑的这一事实,您无论如何都必须进行词干提取。没有单词文件会包含每个单词的每个变化。
  • 问题是这是否需要。我们是否需要 100% 准确的结果,或者我们可以接受最佳结果。使用字典 + 词干提取可能并不完美,但对于 TS 来说可能已经足够好了。
【解决方案3】:

您可以使用 PyWordNet。那是 WordNet 的 python 接口。只需将句子拆分为空格并检查每个单词是否在字典中。

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 2017-05-08
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多