📜  NLP-单词级别分析(1)

📅  最后修改于: 2023-12-03 15:17:53.053000             🧑  作者: Mango

NLP-单词级别分析

简介

自然语言处理(NLP)是一种人工智能的分支领域,它致力于研究如何让计算机理解和处理人类语言。在NLP中,单词级别分析是其中的一个重要组成部分。

单词级别分析是指将文本分割成单词并对其进行词形还原、词性标注、命名实体识别等处理的过程。在文本处理中,单词是一个显著的分析单元,因为它是语料库中最基本的组成部分。

常用技术
分词

分词是将一个句子分成一个个词语的过程。在中文NLP中,因其字词间无空格,因此需要进行特殊处理。常用的中文分词技术有:

  • 基于规则的分词:利用分词规则进行分词,如根据《新华字典》等词库进行分词。

  • 基于统计的分词:利用统计学方法,通过训练模型获得最优分词结果,如中科大提供的“jieba”分词工具。

  • 混合型分词:结合基于规则的方法和基于统计的方法,如哈工大提供的“ltp”分词工具。

词形还原

词形还原是指将词汇的各种时态、派生形式等还原为其原始形式。如将“was”还原为“be”、“walked”还原为“walk”等。常用的英文词形还原算法有:

  • 原型归并算法(Porter算法)

  • 词形还原算法(Lemmatization):如WordNet等工具。

词性标注

词性标注是指为一个句子中的每个单词标注其词性。如动词、名词、形容词等。常用的词性标注工具有:

  • NLTK

  • Stanford POS

  • 中科大LTP

命名实体识别

命名实体识别是指从文本中自动识别出人名、地名、机构名等实体。常用的命名实体识别工具有:

  • Stanford NER

  • 中科大LTP

代码示例
import nltk
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
from nltk.corpus import brown

text = "This is a sample sentence, showing off the stop words filtration."
# 分词
tokens = word_tokenize(text)
print("分词结果:", tokens)

# 词形还原
lemmatizer = WordNetLemmatizer()
for token in tokens:
    # 判断词性
    pos = nltk.pos_tag([token])[0][1][0].lower()
    if pos not in ['a', 'n', 'v']:
        pos = 'n'
    # 词形还原
    lemma = lemmatizer.lemmatize(token, pos=pos)
    print(token, "->", lemma)

# 词性标注
pos_tags = nltk.pos_tag(tokens)
print("词性标注结果:", pos_tags)

# 命名实体识别
chunked = nltk.ne_chunk(pos_tags, binary=True)
for tree in chunked:
    if hasattr(tree, 'label') and tree.label() == 'NE':
        print(' '.join(c[0] for c in tree), "-", tree.label())

# 统计词频
fdist = nltk.FreqDist(brown.words())
print("统计词频结果:", fdist.most_common(10))

代码中使用的是NLP常用工具包NLTK,示例包括分词、词形还原、词性标注、命名实体识别以及词频统计等操作。代码返回的结果均为包括结果的列表或元组。