什么是自然语言处理在此准则中正确执行?
我是新来的自然语言处理,我想用它来编写新闻聚合器(在我的情况下在Node.js中)。我不想仅仅使用预先包装框架,我想了解这些细节,并且从NLP部分开始。我发现这一个教程,一直至今最有帮助的:什么是自然语言处理在此准则中正确执行?
http://www.p-value.info/2012/12/howto-build-news-aggregator-in-100-loc.html
在这里面,笔者得到的RSS源,并通过他们循环找元素(或领域)title
和description
。我了解Python并理解代码。但我不明白的是,NLP在title
和description
之下正在做什么(除了刮擦和标记化,这很明显...并且这些任务不需要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'])
(更仔细阅读你的问题,也许这一切都已经明显给你,但它并不像什么更深刻的或有趣的是怎么回事)
wordpunct_tokenize
被设置在这里here(最后线)
wordpunct_tokenize = WordPunctTokenizer().tokenize
WordPunctTokenizer是implemented通过这样的代码:
class WordPunctTokenizer(RegexpTokenizer):
def __init__(self):
RegexpTokenizer.__init__(self, r'\w+|[^\w\s]+')
这个的核心是正则表达式r'\w+|[^\w\s]+'
,它定义了什么字符串被这个标记器认为是令牌。有两个选项,由|
分隔:
-
\w+
,即,多于一个的“字”的字符(字母或数字) -
[^\w\s]+
,一个以上的字符不是任一个“字”字符或空格,因此这匹配任何标点符号
Here is a reference Python正则表达式。
我没有挖成RegexpTokenizer,但我认为设置使得tokenize
函数返回,搜索正则表达式,第一场比赛的字符串,然后在下一个迭代器等
这不是我正在寻找的..我已经知道解析,标记,正则表达式。我想知道NLP如何在代码中工作,并且正在应用......意思是单词,标签(即In/for)等。 – dman 2014-11-08 23:21:13
这个问题很不清楚。 NLP不是做东西的东西。我认为你应该改述你的问题。 – Pierre 2014-11-09 17:15:58