什么是自然语言处理在此代码中正确执行?

时间:2014-11-08 19:06:23

标签: nlp

我是自然语言处理的新手,我想用它来编写新闻聚合器(在我的案例中是Node.js)。我不是只使用预包装框架,而是想学习螺母和螺栓,我从NLP部分开始。我发现这个教程到目前为止最有帮助:

http://www.p-value.info/2012/12/howto-build-news-aggregator-in-100-loc.html

在其中,作者获取RSS提要并通过它们循环查找元素(或字段)titledescription。我了解Python并理解代码。但是我不明白的是NLP在这里做了什么titledescription(除了抓取和标记之外,这很明显......而且那些任务不需要NLP)

import feedparser
import nltk
corpus = []
titles=[]
ct = -1
for feed in feeds:
    d = feedparser.parse(feed)
    for e in d['entries']:
       words = nltk.wordpunct_tokenize(nltk.clean_html(e['description']))
       words.extend(nltk.wordpunct_tokenize(e['title']))
       lowerwords=[x.lower() for x in words if len(x) > 1]
       ct += 1
       print ct, "TITLE",e['title']
       corpus.append(lowerwords)
       titles.append(e['title'])

1 个答案:

答案 0 :(得分:1)

(更仔细地阅读你的问题也许这对你来说已经很明显了,但它看起来不像是更深刻或有趣的事情)

wordpunct_tokenize在此here(最后一行)设置为

wordpunct_tokenize = WordPunctTokenizer().tokenize
此代码

WordPunctTokenizerimplemented

class WordPunctTokenizer(RegexpTokenizer):
    def __init__(self):
        RegexpTokenizer.__init__(self, r'\w+|[^\w\s]+')

这的核心只是正则表达式r'\w+|[^\w\s]+',它定义了此标记生成器将哪些字符串视为标记。有两个选项,由|分隔:

  1. \w+,即多个“字”字符(字母或数字)
  2. [^\w\s]+,多个字符不是“单词”字符或空格,因此匹配任何标点字符串
  3. Here is a reference用于Python正则表达式。

    我没有挖到RegexpTokenizer,但我假设设置为tokenize函数返回一个迭代器,它在字符串中搜索正则表达式的第一个匹配,然后搜索下一个等等。