2014-11-08 36 views
-3

我是新来的自然语言处理,我想用它来编写新闻聚合器(在我的情况下在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']) 
+0

这个问题很不清楚。 NLP不是做东西的东西。我认为你应该改述你的问题。 – Pierre 2014-11-09 17:15:58

回答

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]+,一个以上的字符不是任一个“字”字符或空格,因此这匹配任何标点符号

Here is a reference Python正则表达式。

我没有挖成RegexpTokenizer,但我认为设置使得tokenize函数返回,搜索正则表达式,第一场比赛的字符串,然后在下一个迭代器等

+0

这不是我正在寻找的..我已经知道解析,标记,正则表达式。我想知道NLP如何在代码中工作,并且正在应用......意思是单词,标签(即In/for)等。 – dman 2014-11-08 23:21:13