【问题标题】:What is Natural Language Processing Doing Exactly in This Code?自然语言处理在这段代码中究竟做了什么?
【发布时间】:2014-11-08 19:06:23
【问题描述】:

我是自然语言处理的新手,我想用它来编写一个新闻聚合器(在我的例子中是 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'])

【问题讨论】:

  • 这个问题很不清楚。 NLP 不是做事的东西。我认为你应该改写你的问题。

标签: nlp


【解决方案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 函数返回一个迭代器,该迭代器在字符串中搜索正则表达式的第一个匹配项,然后是下一个匹配项,等等。

【讨论】:

  • 这不是我要找的……我已经知道解析、标记、正则表达式。我想知道 NLP 在代码中是如何工作并被应用的……意思是单词、标签(即 In/for)等。
猜你喜欢
  • 2017-06-11
  • 1970-01-01
  • 2010-12-16
  • 2021-08-22
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2011-06-18
  • 2012-07-23
相关资源
最近更新 更多