【问题标题】:How to distinguish english sentence syntax in python?如何区分python中的英文句子语法?
【发布时间】:2015-08-06 20:50:28
【问题描述】:

我正在寻找一种使用 python 程序区分英语语法(动词、名词、形容词等)的有效方法。

目前我实现这一点的方法是让程序阅读 dicionary.com 的源代码并使用一些剪辑来查找信息

url = "http://dictionary.reference.com/browse/" + x + "?s=t"]
request = urllib2.Request(url)
handle = urllib2.urlopen(request)
content = handle.read()

# cut the html code to the correct spot
splitted_page = content.split(b"<span class=\"dbox-pg\">", 1)
splitted_page = splitted_page[1].split(b"</span>", 1)
word_type.append(splitted_page)

其中 x 是我正在搜索的单词。我的问题是这被证明是非常困难的,因为该网站的源代码不一致,因此该代码适用于某些单词,但不适用于其他单词。

我想知道是否有更简单的方法来做到这一点?

提前谢谢你!

【问题讨论】:

  • 一个挑战,解析英语是。您应该使用离线单词列表,例如 ASpell。
  • 听起来您有两个不同的问题? 1. 持续抓取网页 2. 处理英文单词?对于 2,您可以使用像 nltk.org 这样的库。首先,我不认为寻找特定节点是要走的路,尽管我不确定我是否遵循您试图从 dictionary.com 获取的特定数据。
  • stackoverflow.com/questions/22740789/… 有一些您可以查看的字典 API。您的问题的另一个问题是单词可以有多个语法用途。例如act既是名词又是动词
  • 也许使用 NLTK(Natural Language Toolkit) 库。

标签: python dictionary web-crawler


【解决方案1】:

如果不使用 NLTK,我会去识别特定的后缀,看看在哪里。 只是一个布局。

所以,把一个句子分成单词,看看哪些单词以“ed”、“ing”、“tion”、“ay”“et”“ct”“ee”“ly”“ful”“less””结尾尼斯”等。

还有缩写形式 "n.t" ".ve" "'re" "'d"...

使用一些轻量级字典来支持这一点,例如 CMUDict,它只包含单词及其各自的发音。

在某处有一个不规则动词和常用形式的列表,例如“am”“is”“are”“was”“were”“have”“has”“will”“shall”“do”“does”“did”以及它们的负面影响。

通过这个系统,你可以看到你是否得到了一个英文单词。

从它的后缀和在句子中的位置你可以很好地猜出它在句子中的作用。

否则,即使您有单独的动词和名词列表,通常也很难分辨(仅通过查看这个词)它是名词还是动词。 所以无论如何你都必须有一个上下文管理器。 (如果您希望您的猜测 98% 正确)。

搜索任何英语词典(如果您不使用 CMUDict)并解析它以供您使用。

不要在网上做!它会很慢,并且可能会出现大量其他问题,包括返回不一致和连接问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多