2014-11-08 53 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