你知道《圣经》中的主要角色有哪些吗?三种NLP工具将告诉你答案!
作者:CQITer小编 时间:2018-06-25 21:45
提到数据科学,我们想到的都是数字的统计分析,但如今需要对很多非结构文本进行量化分析。本文将以《圣经》为例,用 spaCy Python 库把三个最常见的 NLP 工具(理解词性标注、依存分析、实体命名识别)结合起来分析文本,以找出《圣经》中的主要人物及其动作。

引言
在思考数据科学的时候,我们常常想起数字的统计分析。但是,各种组织机构越来越频繁地生成大量可以被量化分析的非结构文本。一些例子如社交网络评论、产品评价、电子邮件以及面试记录。
就文本分析而言,数据科学家们通常使用自然语言处理(NLP)。我们将在这篇博客中涵盖 3 个常见的 NLP 任务,并且研究如何将它结合起来分析文本。这 3 个任务分别是:
词性标注——这个词是什么类型?
依存分析——该词和句子中的其他词是什么关系?
命名实体识别——这是一个专有名词吗?
我们将使用 spaCy Python 库把这三个工具结合起来,以发现谁是《圣经》中的主要角色以及他们都干了什么。我们可以从那里发现是否可以对这种结构化数据进行有趣的可视化。
这种方法可以应用于任何问题,在这些问题中你拥有大量文档集合,你想了解哪些是主要实体,它们出现在文档中的什么位置,以及它们在做什么。例如,DocumentCloud 在其「View Entities」分析选项中使用了类似的方法。
分词 & 词性标注
从文本中提取意思的一种方法是分析单个单词。将文本拆分为单词的过程叫做分词(tokenization)——得到的单词称为分词(token)。标点符号也是分词。句子中的每个分词都有几个可以用来分析的属性。词性标注就是一个例子:名词可以是一个人,地方或者事物;动词是动作或者发生;形容词是修饰名词的词。利用这些属性,通过统计最常见的名词、动词和形容词,能够直接地创建一段文本的摘要。
使用 spaCy,我们可以为一段文本进行分词,并访问每个分词的词性。作为一个应用示例,我们将使用以下代码对上一段文本进行分词,并统计最常见名词出现的次数。我们还会对分词进行词形还原,这将为词根形式赋予一个单词,以帮助我们跨单词形式进行标准化。
from collections import Counter
import spacy
from tabulate import tabulate
nlp = spacy.load('en_core_web_lg')
text = """
One way to extract meaning from text is to analyze individual words.
The processes of breaking up a text into words is called tokenization --
the resulting words are referred to as tokens.
Punctuation marks are also tokens.
Each token in a sentence has several attributes we can use for analysis.
The part of speech of a word is one example: nouns are a person, place, or thing;
verbs are actions or occurences; adjectives are words that describe nouns.
Using these attributes, it's straightforward to create a summary of a piece of text
by counting the most common nouns, verbs, and adjectives.
"""
doc = nlp(text)
noun_counter = Counter(token.lemma_ for token in doc if token.pos_ == 'NOUN')
print(tabulate(noun_counter.most_common(5), headers=['Noun', 'Count']))
Noun Count
--------- -------
word 5
text 3
token 3
noun 3
attribute 2
依存分析



