python自然语言处理——NLTK——词性标签(pos_tag)

原创 2018年04月16日 07:10:52

  • 最近在做一个分类40000条推特评论的情感分类器。
  • 设计文本情感分类器的时候首先要用到的就是NLTK包来进行单词过滤。

先用NLTK包的pos_tag方法(part-of-speech tagging )来对单词的词性进行标记,标记后的结果是二元数组格式。之后从这个二元数列中挑出我们所有需要的tag,存放进一个二元数列。


  • 实现代码:

首先别忘了

import nltk

假设我们处理的是like hate这两个词。任意选择一段英语文本,创建它们的token

words=word_tokenize(‘i hate study on monday. Jim like rabbit.’)

然后挑选出所有需要的词性。词性列表:

CC     coordinatingconjunction 并列连词

CD     cardinaldigit  纯数  基数

DT     determiner  限定词(置于名词前起限定作用,如 thesomemy 等)

EX     existentialthere (like:"there is"... think of it like "thereexists")   存在句;存现句

FW     foreignword  外来语;外来词;外文原词

IN     preposition/subordinating conjunction介词/从属连词;主从连词;从属连接词

JJ     adjective    'big'  形容词

JJR    adjective, comparative 'bigger' (形容词或副词的)比较级形式

JJS    adjective, superlative 'biggest'  (形容词或副词的)最高级

LS     listmarker  1)

MD     modal (could, will) 形态的,形式的 , 语气的;情态的

NN     noun, singular 'desk' 名词单数形式

NNS    nounplural  'desks'  名词复数形式

NNP    propernoun, singular     'Harrison' 专有名词

NNPS  proper noun, plural 'Americans'  专有名词复数形式

PDT    predeterminer      'all the kids'  前位限定词

POS    possessiveending  parent's   属有词  结束语

PRP    personalpronoun   I, he, she  人称代词

PRP$  possessive pronoun my, his, hers  物主代词

RB     adverb very, silently, 副词    非常  静静地

RBR    adverb,comparative better   (形容词或副词的)比较级形式

RBS    adverb,superlative best    (形容词或副词的)最高级

RP     particle     give up 小品词(与动词构成短语动词的副词或介词)

TO     to    go 'to' the store.

UH     interjection errrrrrrrm  感叹词;感叹语

VB     verb, baseform    take   动词

VBD    verb, pasttense   took   动词   过去时;过去式

VBG    verb,gerund/present participle taking 动词  动名词/现在分词

VBN    verb, pastparticiple     taken 动词  过去分词

VBP    verb,sing. present, non-3d     take 动词  现在

VBZ    verb, 3rdperson sing. present  takes   动词  第三人称

WDT    wh-determiner      which 限定词(置于名词前起限定作用,如 thesomemy 等)

WP     wh-pronoun   who, what 代词(代替名词或名词词组的单词)

WP$    possessivewh-pronoun     whose  所有格;属有词

WRB    wh-abverb    where, when 副词

(https://wenku.baidu.com/view/c63bec3b366baf1ffc4ffe4733687e21af45ffab.html)

因为情感分类,一般需要的是人称代词、动词、形容词、副词等,所以挑选出合适的tags;并且把pos_tag方法创建的词和对应词性保存在pos_tags数列。

tags = set(['MD', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'RP', 'RB', 'RBR', 'RBS', 'JJ', 'JJR', 'JJS'])
pos_tags =nltk.pos_tag(words)

之后创建空数组ret,遍历pos_tags,把有我们需要的词性的数组保存到ret[]

ret = []
for word,pos in pos_tags:
        if (pos in tags):
            ret.append(word)
 return ' '.join(ret)

自然语言处理-Word2Vec

-
  • 1970年01月01日 08:00

NLTK词性tag含义

最近使用NLTK的nltk.pos_tag的时候,不太清楚各个tag的含义,所以整理了一下: NLTK词性: 标记 含义 例子 CC 连词 and, or,but, if, while,altho...
  • John159151
  • John159151
  • 2015-12-10 21:39:43
  • 3991

【自然语言处理】词性标记代码及其含义

以下为各个词性的含义1.      CC      Coordinating conjunction 连接词2.     CD     Cardinal number  基数词3.     DT   ...
  • qq280929090
  • qq280929090
  • 2017-04-13 21:04:45
  • 820

NLTK的词性

1.      CC      Coordinating conjunction 连接词 2.     CD     Cardinal number  基数词 3.     DT     Determ...
  • heyongluoyao8
  • heyongluoyao8
  • 2015-02-11 11:15:17
  • 12951

NLTK之词性标注

我的原文:http://blog.hijerry.cn/p/63432.html 词性标注重要性 回想学英语的时候,老师就开始讲词性,通过分析句子中某个单词的词性,我们可以推测这个词的意思,猜测这...
  • TinyJian
  • TinyJian
  • 2018-01-19 20:33:48
  • 277

nltk英文词性分析

Python 的nltk完成英文词性分析
  • LRita
  • LRita
  • 2015-09-04 18:42:16
  • 2314

Python NLTK学习5(词性标注)

本系列博客为学习《用Python进行自然语言处理》一书的学习笔记。 词性标注器 一个词性标注器处理一个词序列,为每个词附加一个词性标记,我们先看一个示例: import nltk wor...
  • AMDS123
  • AMDS123
  • 2017-03-28 20:33:34
  • 7615

nltk.pos_tag函数

nltk.pos_tag函数nltk.pos_tag()函数是一种用来进行词性标注的工具。def pos_tag(tokens, tagset=None, lang='eng'): """ ...
  • qq_33843297
  • qq_33843297
  • 2017-10-11 11:27:35
  • 163

NLTK中文词性自动标注

NLTK是多语言支持的, 但目前网上的例程几乎没有用NLTK处理中文的,其实可以做。比如标注功能, 它自身提供了带标注的中文语库(繁体语料库sinica_treebank). 下面来看看怎样通过数据训...
  • xieyan0811
  • xieyan0811
  • 2017-03-24 09:15:56
  • 3835

python自然语言处理——NLTK——词性标签(pos_tag)的字典重构

继续上一篇——词性标签运行代码后,发现问题结果发现,like和hate并没有被加入ret[]。但是like和hate是我们非常重要的情感关键词。原因是like和hate的词性在字典里居然被算作IN和N...
  • JasonJarvan
  • JasonJarvan
  • 2018-04-16 08:49:46
  • 27
收藏助手
不良信息举报
您举报文章:python自然语言处理——NLTK——词性标签(pos_tag)
举报原因:
原因补充:

(最多只允许输入30个字)