自然语言处理---新词发现---生成二元组

record:

生成二元组

#coding:utf-8
'''
Created on 2014年10月15日
@author: shifeng
'''
import codecs
#----------------------
#一行一行读取该文件#2012_7after_preproces#testdata
with codecs.open(u"D:/shifengworld/NLP/NLP_project/新词发现/data/data_preproces/test/2012_7after_preprocesN.txt") as f:
    text = f.readlines()
#----------------------
file_object=open(u"D:/shifengworld/NLP/NLP_project/新词发现/data/data_preproces/test/data_getCW300.txt",'w')
#----------------------
'''
生成二元组,并且作各种记录:
1.该词出现的频率,用于词频过滤
2.该词出现的所在行数,以备找回该词所在的句子,情绪倾向性需要用到
3.该词的邻接?,以及一些统计特征需要的统计量,用于统计特征过滤
4.
'''
dict={}
record_line_num=1
for line in text:
    line=line.decode('utf-8')       #注意注意:文件需要时utf-8格式,不然解码问题错误!!!
#     print line,
    for i in range(len(line)-3):    #包括换行符,不要,所以长度减3
        tuple=line[i:i+2]
        if tuple in dict:       #或者dict.has_key(tuple),如果出现过元组,那么加1就行
            dict[tuple]=dict[tuple]+1  
        else:                   #否则,进行下一步判断,
            if ' ' in tuple:    #如果某个二元组包含空格 
                pass
            else:               #第一次出现,而且不包括空格的话,那么出现频率赋为1就行
                dict[tuple]=1
                #---------------#出现了某个词记录其行数,以备找到词后找回原来的句子,处理后的续情绪倾向性任务时有用
                #---------------
    record_line_num=record_line_num+1       #运行完了后,进入下一行,行数+1
    print '第',record_line_num,'行'
'''-------------------------------------------------
将得到的二元组,进行过滤,
A.考虑各种过滤方法:
1.词频过滤
2.不能构成搭配的词过滤
3.统计特征过滤
4.
B.并且,每种过滤方法都进行各种统计,得出统计数据,如该统计该过滤方法过滤的效果、过滤的数量
C.
-------------------------------------------------'''
#----------------------------1.词频过滤--------------------------
lower_bound_fre=300               #词频选择,频率小于lower_bound_fre的去掉
for j in dict.keys():
    if dict[j]<lower_bound_fre:              
        del dict[j]
    else:
        pass
#         print j,dict[j]
dict_sort=sorted(dict.iteritems(), key=lambda d:d[1],reverse=True) #排序后是数组类型的数据
for k in dict_sort:
#     print k[0]," ",k[1]
    file_object.write(k[0]+" "+str(k[1])+"\n")
#-----------------------------2.停用词、助词等不能构成搭配的词,用词典过滤----

#-----------------------------3.统计特征过滤------------------------
#-----------------------------4.词典过滤---------------------------

#-----------------------------5.--------------------------------
file_object.close()





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值