「机器人圈」编译:多啦A亮
自然语言处理(NLP)的一个伟大方面在于跨越多个领域的计算研究。从人工智能领域到计算语言学领域等多个计算研究领域,都在对计算机与人类语言的相互作用进行研究。它主要聚焦于计算机怎样准确且快速地处理大量的自然语言语料库。那什么是自然语言语料库呢?它是用现实世界的语言来进行的语言学习,是从文本以及语言与另一种语言的关系里去理解一组抽象规则的一种综合方式。
NLP 在现代计算机工业革命中变得更具现实性。实际上,是阿兰·图灵发现了它。阿兰·图灵曾协助破解德国密码,并且还撰写了一篇名为《计算机器与智能》的文章。
有一篇文章,在这篇文章中首次提出了将人类语言与计算机相联系的做法。随着我们日常生活中现有的技术持续发展,我们能看到自然语言处理(NLP)能够借助一些革命性的工具,像翻译、IBM 的沃森机器人、语音识别与生成以及情感分析等,让我们的日常生活更具影响力。
然而,如同所有的事情一般,NLP 存在一些问题与欠缺。让其他事物生成一种自然流露的语言是较为费力的,这与一个人在阅读糟糕的电影剧本时的情况相似,其听起来就像是一台电脑在讲话。尽管有方法试图去理解语调的变化,但 NLP 依然很难理解诸如讽刺以及发现幽默之类的事物。不过,这是一个需要大量研究的领域,我期盼着“讽刺突破”出现的那一天。如果没有其他情况,那就需要更努力地去理解朋友不常有的问候或者即时消息。
目前可用的一些最有用的计算机/数据科学工具有:
哈希向量化,词频 - 逆文档频率(TF-IDF),词形还原,词干提取,句法分析,情感分析。
()
它是一个库工具,能够获取大量的文本,并且可以将每一个独特的词作为词出现的次数特征返回。尽管这能生成很多特征,但这些特征是很有用的参数,有助于避免包含某些特定的词,如“和”“包含”等。Stop 会生成一个不作为特征的单词列表。这个字典的主要用途是“英文”。它会摒弃诸如“is、the、a、it、as”这类无关紧要的词,这类词出现可能较为频繁,但不会影响我们的最终目标。我们要选择如何将文字进行分组,而不是让自然语言处理(NLP)单独返回每个单词。若结果等于 2,可得到类似“ ”的结果;若结果等于 3,将得到“See you ”的结果。你选择创建的特征数量是多少。若你选择它为零,那就意味着你会将每个词以及所有词都当作特征;然而,倘若你将其设置为 50,那么你就只会得到 50 个最常用的词。
哈希向量( )
()
使用“哈希技巧”,把文本转换为事件矩阵,让每个单词都映射到一个特征,接着用哈希函数把它转换为哈希。要是在文本正文中再次出现这个词,就会转换为相同的特征,如此一来,我们就能在相同的特征里对其进行计数,而无需保留字典。
词频—逆文档频率(TF-IDF)
()
能揭示不同文本体之间最大区别的单词。当你试图查看某一文档中出现的单词的区别,而在其他文档中无法显示对该文档的特殊解释时,它就会很有帮助。它与词频、单词出现的频率以及文档的逆序变化相关,不管在所有文档中是独一无二的还是常见的。
词形还原()
()
这是一种过程,将拐弯曲折的形式组合在一起并作为一个方面进行分析。这也是一种利用一个词的意思来确定“引理()”的方法。它很大程度上依赖于正确地发现“话语意图的部分”以及句子、段落或更大文档中单词的真实含义。“run”是“”或“ran”的基本形式,“”和“good”是相同的引理,所以它们被认为是一样的。
词干提取()
()
它与词形还原很相似,都是将词组合在一起。不过它与词形还原不同,它需要一个词并将其引回到基础或根形式。就我所遇到的最好例子而言,它涉及把词干提取追溯到基本形式。“”“”“”和“”均基于单词“stem”。
句法分析()
(#)
一般用途是对一串词进行分析从而形成语法规则。在自然语言处理(NLP)中,是对一串词进行分析,推出一个解析树,这个解析树揭示了单词之间的句法关系,且这种句法关系可以包含语义。然而,解析存在回溯情况,即何时以及何事被解析完全取决于用户,因为任何段落都能够以任何方式在从单个字符到整个句子的范围内进行解析。
情绪分析( )
()
其中一个最简单的定义是从文档或文档集中提取一个单词的解释或主观含义,以此来确定特定单词或一组单词的“态度”。它最大的用途之一是在社交媒体等环境中,用于发现舆论的趋势,特定音调背景下出现的频率,以及理解词组的语气。
在进行这些分析之前,我强烈建议你对正在处理的文档进行过滤和清洗。我的老师马克·穆默特(Mark)创建了一个非常好的函数。这个函数专注于利用 soup(一种爬虫)来清理 html 文件,并且使用它能够很容易地适应其他自然语言处理(NLP)的清理工作。
def ():
# html
=().()
# non- -
= re.sub("[^a-zA-Z]", " ", )
# to and into
= .().()
# Stop- to a set and them
= set(.(""))
= [w for w in if not w in ]
( " ".join( ))
NLP 的世界很大且复杂,它仍将是一个很大的研究领域。这个领域中有许多有用的工具,这些工具在理解语言方面有极其有益的用途,在利用语言方面也有极其有益的用途。
用户认为,最有用的 NLP 资源将会是 Sci-Kit 库。
)和NLTK库()。
工作时间:8:00-18:00
电子邮件
扫码二维码
获取最新动态