美文网首页
自然语言处理基础

自然语言处理基础

作者: 王志坦 | 来源:发表于2017-12-07 15:49 被阅读0次

前言

  • 年初公司开展了一个智能聊天机器人的项目(Sima),前期在项目里面负责NLP调研和爬虫的工作,出于学习兴趣和工作需要,便报了个NLP的学习课程,老师是百度凤巢的,对其水平很是敬佩,人也很nice。虽说对NLP的兴趣不是max,但是学习过程中能把算法知识复习一遍也是极好的。
  • 像BAT等这样的互联网公司里,核心数据仍是文本数据,基于文本可以做大量的工作,来为公司的核心业务目标服务。例如搜索业务,需要对用的搜索query做大量的分析,分析用户的搜索意图,这看似简单的过程,其中衍生了非常多的技术。
  • 本文集---NLP自然语言处理,记录学习过程中收获的知识点和感悟。

环境配置

  • Linux环境(本人用的deepin,强制办公系统为Linux,更能练习Linux操作)
  • python 2.7 (这个不强求)

1.正则表达式

2.NLP中常用linux shell命令

  • awk
  • sort 排序用
  • uniq 用于报告或忽略文件中的重复行,一般与sort结合使用。
  • sed 编辑文件,简化对文件的反复操作等。
    学习Linux命令,推荐鸟哥。

3.中文分词:jieba包的使用

  • jieba大概是Python里面最好用的分词系统了,代码量少,速度不错。基于HMM模型实现,可以实现一定程度的未登录词识别。

  • jieba有三种模式:
    -- 精确模式
    -- 全模式:找到所有可能的词语
    -- 搜索模式:在精确模式的基础上对长词进行切割,提高召回率。

  • jieba.cut和jieba.cut_for_serach返回的结构都是可迭代的generator,可以是用for循环来获得分词后得到的每一个词语(Unicode)

  • jieba.cut方法接受三个输入参数:
    -- 需要分词的字符串
    -- cut_all 参数控制是否采用全模式
    -- HMM参数控制是否采用HMM模型

  • 下面用一个垃圾短信分类分词(选取top100的词频)来简单介绍jieba的使用

#encoding:utf8
#Created on 2017-12-06    by  wzt

#引入需要的包
import jieba
import codecs   #自然语言编码转换模块
import csv
from collections import Counter  
import sys
reload(sys)
sys.setdefaultencoding('utf8')

#数据目录
data_path = '/home/wang/Desktop/bat/data20171204/normal.txt'
result_path = '/home/wang/Desktop/bat/data20171204/result.csv'

#切出来是一个大list
with codecs.open(data_path,'r','utf-8') as f:
    seg_list = jieba.cut(f.read(),cut_all=False)
    words_list = list(seg_list)

#使用Counter方法选取词频top100
count = Counter(words_list)
most100 = count.most_common(100)
print most100

#写入result.csv
for x in xrange(len(most100)):
    print '词语:[',most100[x][0],']==>','频次:',most100[x][1]
    with codecs.open(result_path, 'a','utf-8') as csvfile:
        writer = csv.writer(csvfile)
        rows = most100[x][0],most100[x][1]
        writer.writerow(rows)

结尾

如果有写的不好的地方或者错误的地方,请各位看官斧正!
谢谢大家!

相关文章

网友评论

      本文标题:自然语言处理基础

      本文链接:https://www.haomeiwen.com/subject/tbmdixtx.html