NLP入门总结

part 1 for beginners bag of words

  1. 数据读取

    train = pd.read_csv("labeledTrainData.tsv", header=0, \ delimiter="\t", quoting=3)

    >>> train.shape

    (25000, 3)

    数据有25000行,三列.

  2. 数据清洗和文本处理

    由于数据中有html标签,引入BeautifulSoup库进行清理,同时使用正则表达式,把标点符号和数字替换为空格,然后出去所有的大写字母,方便后来的单词处理 (例如Love和love,实质是一个单词,如果不把大小字母处理,可能会识别为两个单词),还要去除 stop words,因为 stop words 出现的频率高,但是意义不大.关键代码如下:

    example1 = BeautifulSoup(train["review"][0]).get_text()

    letters_only = re.sub("[^a-zA-Z]", " ")

    lower_case = letters_only.lower()

    words = lower_case.split()

    然后把每一个review的处理后的词,放入list中

  3. 使用词袋模型创建特征向量

    Sentence 1: "The cat sat on the hat"

    Sentence 2: "The dog ate the cat and the hat"

    From these two sentences, our vocabulary is as follows:

    M = { the, cat, sat, on, hat, dog, ate, and }

    集合M称为词汇表,词汇表是从所有的训练文本中提取出来的词汇的集合

    Sentence 1: { 2, 1, 1, 1, 1, 0, 0, 0 }

    Sentence 2: { 3, 1, 0, 0, 1, 1, 1, 1}

    把每一个Sentence转化为一个向量

    词汇表的长度n,就是每一个Sentence向量的维度

    这就是使用词袋模型创建特征向量的基本方法

    此时统计review样本中的词汇,找到词汇表M,然后按照上述方法,将每一个review转化为特征向量(特征向量的维度取决于词汇表的长度n

  4. 随机森林算法

    有了每一个review的特征向量,还有每一个review的sentiment,采用随机深林算法

    forest = forest.fit( train_data_features, train["sentiment"] )

    算法完成以后,可以做预测

    result = forest.predict(test_data_features)

    其中test_data_features无sentiment标签

    output = pd.DataFrame(data={"id":test["id"], "sentiment":result})


part 2 word vectors

问题引入

什么是one-hot编码,该编码有什么缺点?

任何一门语言,都是由一堆的词组成,所有的词,构成了一个词汇表。词汇表,可以用一个长长的向量来表示。词的个数,就是词汇表向量的维度。那么,任何一个词,都可以表示成一个向量,词在词汇表中出现的位置设为1,其它的位置设为0。但是这种词向量的表示,词和词之间没有交集,用处不大。

为什么需要word2vec,word2vec主要是干什么用的?

为了克服one-hot编码的缺点,word2vec利用上下文信息推测词的意思,这种方法训练出来的词,相似的词,词的特征向量之间的夹角越小。


Word2Vec 的训练模型,是具有一个隐含层的神经元网络,有两种训练方法
CBOW (Continuous Bag-of-Words Model) 和 Skip-gram (Continuous Skip-gram Model)

CBOW,它的做法是,将一个词所在的上下文中的词作为输入,而那个词本身作为输出,也就是说,看到一个上下文,希望大概能猜出这个词和它的意思。


Skip-gram,它的做法是,将一个词所在的上下文中的词作为输出,而那个词本身作为输入,也就是说,给出一个词,希望预测可能出现的上下文的词


part2正式内容

  1. word2vec介绍

    word2vec由谷歌在2013年发布,balabala...............

  2. 如何在python中使用

    如何安装,此处省略。。。。。。。。

  3. 训练模型,保存训练后的模型,测试

    主要代码如下:

    model = word2vec.Word2Vec(sentences, workers=num_workers, \
    size=num_features, min_count = min_word_count, \
    window = context, sample = downsampling)


    Word2Vec.load()

    model_name = "300features_40minwords_10context"

    model.save(model_name)

    测试模型

    >>model.doesnt_match("man woman child kitchen".split())

    'kitchen'

model.most_similar("man")
[(u'woman', 0.6056041121482849), (u'guy', 0.4935004413127899), (u'boy', 0.48933547735214233), (u'men', 0.4632953703403473), (u'person', 0.45742249488830566), (u'lady', 0.4487500488758087), (u'himself', 0.4288588762283325), (u'girl', 0.4166809320449829), (u'his', 0.3853422999382019), (u'he', 0.38293731212615967)]

part 3 more fun with word vectors

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342