精华内容
下载资源
问答
  • 2022-03-13 16:59:03

    一、字典特征提取

    对字典数据进行特征值化

    特征提取的API

    sklearn.feature_extraction 
    

    transfer.fit_transform(X):
        X:字典或者包含字典迭代器的返回值
        返回一个稀疏矩阵
    transfer.get_feature_names_out():返回类别名称

    代码实现:

    from sklearn.feature_extraction import DictVectorizer
    
    
    def dict_demo
    更多相关内容
  • conll 特征词提取 python

    2012-02-20 09:10:13
    这是我自己写的conll评测比赛的程序,希望对大家有帮助
  • 然后,将特征词在词语级、句子级这2种不同粒度情况下计算出的情感倾向性贡献度值有机结合起来,构造出基于双粒度模型的中文情感特征词提取模型。该提取方法考虑了特征词在词语级和句子级2个方面的情感倾向,使最终...
  • 文本特征词提取算法

    千次阅读 2017-09-27 14:05:04
    另外,为了提高文本分类的准确性和效率,一般先剔除决策意义不大的词语,这就是特征词提取的目的。本文将简单介绍几种文本特征词提取算法。 信息增益(IG) 对于一个系统,其信息熵为H(S)=−∑iCPilog2(Pi).C表示...

    在文本分类中,需要先对文本分词,原始的文本中可能由几十万个中文词条组成,维度非常高。另外,为了提高文本分类的准确性和效率,一般先剔除决策意义不大的词语,这就是特征词提取的目的。本文将简单介绍几种文本特征词提取算法。

    信息增益(IG)

    对于一个系统,其信息熵为 H(S)=−∑iCPilog2(Pi). C表示类别个数, Pi表示第 i的类别的概率。某个特征 F,有该特征和没有该特征,信息量的变化,就是信息增益。

    对特征 F,它的取值有 n种( x1 x2, ... ,  xn),计算每个值的条件熵,并取均值

    H(C|F)=∑inPiH(C|X=xi)

    在分类中,特征词 f只有存在(取值1)和不存在(取值为0)。那么 H(C|f)=P(f=0)H(C|f=0)+P(f=1)H(C|f=1)。所以信息增益为

    IG(F)=H(F)−H(C|F)=−∑i=1nP(Ci)log(P(Ci)+

    P(f=1)∑i=1nP(Ci|f=1)logP(Ci|f=1)+P(f=0)∑i=1nP(Ci|f=0)logP(Ci|f=0)

    信息增益提取特征词步骤:

    1,统计正负分类的文档数,记为 N1 N2.

    2, 统计每个词在正文档出现的频率(A),负文档出现的频率(B),正文档不出现的频率(C),负文档不出现的频率(D).

    3,计算信息熵

    H(S)=−(N1N2+N1log(N1N1+N2)+N2N1+N2log(N1N1+N2))

    4,计算每个词 w的信息增益

    IG(w)=H(S)+A+BN1+N2(AA+Blog(AA+B)+BA+Blog(BA+B))

    +A+BN1+N2(AA+Blog(AA+B)+BA+Blog(BA+B))

    5,按照信息增益的大小排序,取topxx就行。

     

    卡方校验(chi-square)

    卡方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否。具体做的时候常常先假设两个变量确实是独立的(“原假设”),然后观察实际值(观察值)与理论值(这个理论值是指“如果两者确实独立”的情况下应该有的值)的偏差程度,如果偏差足够小,我们就认为误差是很自然的样本误差,是测量手段不够精确导致或者偶然发生的,两者确确实实是独立的,此时就接受原假设;如果偏差大到一定程度,使得这样的误差不太可能是偶然产生或者测量不精确所致,我们就认为两者实际上是相关的,即否定原假设,而接受备择假设。

    假设理论值是 E,实际值是 x,偏差程度的计算公式为:

    ∑in(xi−E)2E

    这个公式就是卡方检验使用的差值衡量公式, xi表示样本。如果差值很大,则认为与原假设不符合,认为词与类别很相关。现在有N篇文章,分类有体育和非体育两类,考察“足球”和体育类别的关系:

     

    特征选择 属于体育 不属于体育 总计
    包含“足球”单词 A B A+B
    不包含“足球”单词 C D C+D
    总计 A+C B+D N

    如果“足球”与体育不相关,则体育类文章包含“足球”的比例等同于所有文章包含“足球”的比例,所以A的理论值是

    E11=(A+C)A+BN

    卡方差值

    D11=(A−E11)2E11

    同样可以求出 D12,D21,D22,最后求出“足球”与“体育”类的卡方值

    χ2(足球,体育)=D11+D12+D21+D22=N(AD−BC)2(A+C)(A+B)(B+D)(C+D)

    卡方检验的缺点:只考虑了词是否出现,而没有考虑出现了多少次,容易夸大低频词的价值。如一个单词a在一类文章中都出现一次,而另外一个单词b在该类99%的文章中都出现了10次,但是b计算出来的卡方值要小于a,所以,在筛选的时候,容易筛掉单词b,这就是“低频词缺陷”,通常,考虑也需要考虑词频。

     

    卡方提取特征词步骤:

    1,统计正负分类的文档数,记为 N1 N2.

    2, 统计每个词在正文档出现的频率(A),负文档出现的频率(B),正文档不出现的频率(C),负文档不出现的频率(D).

    3,计算卡方

     

    χ2=D11+D12+D21+D22=N(AD−BC)2(A+C)(A+B)(B+D)(C+D)

    5,按照卡方值从大到小,取topxx就行。


    分类:  文本挖掘
    展开全文
  • 走向无监督协议特征词提取
  • 电信设备-基于逐点互信息技术的诈骗信息特征词提取方法及系统.zip
  • #本代码主要实现了对于商品名称根据tfidf提取特征词,然后基于已经训练好的word2vec模型,对每行商品的tfidf值大于某一阈值的特征词相似度匹配已经给定的商品类别。 import jieba import jieba.posseg as pseg ...
    # coding: utf-8
    #本代码主要实现了对于商品名称根据tfidf提取特征词,然后基于已经训练好的word2vec模型,对每行商品的tfidf值大于某一阈值的特征词相似度匹配已经给定的商品类别。
    
    import jieba
    import jieba.posseg as pseg
    import jieba.analyse
    import pymssql
    import xlwt
    from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, TfidfTransformer
    import pandas as pd 
    jieba.load_userdict('C:\\Users\\Desktop\\s_proj\\dict.txt') #导入自定义的分词词典
    
    #连接数据库 
    conn = pymssql.connect(host='1.1.1.1',user='username',password='password',database='database',charset='utf8')
    cur = conn.cursor() 
    sql='select distinct(column) from table' 
    cur.execute(sql) 
    listl=cur.fetchall()
    
    #分词
    words=[]
    for word in listl:
        for i in word:
            seg_list = jieba.cut(i, cut_all=False)
            words.append(" ".join(seg_list))
    
    #计算tfidf
    tfidf_vectorizer = CountVectorizer(min_df=2,max_df = 0.8,token_pattern=u'(?u)\\b[^\\d\\W]\\w+\\b')
    transformer=TfidfTransformer()
    word_tfidf = tfidf_vectorizer.fit_transform(words)
    tfidf=transformer.fit_transform(word_tfidf)
    print(tfidf.shape)
    
    #获取特征词
    features=tfidf_vectorizer.get_feature_names()
    
    #加载已训练好的word2vec模型
    from gensim.models import word2vec
    import logging
    logging.basicConfig(format='%(asctime)s:%(levelname)s: %(message)s', level=logging.INFO)
    model=gensim.models.KeyedVectors.load_word2vec_format('model_word.bin',binary=True)  
    
    #打开要匹配相似度的商品类文本
    f4=open('C:\\Users\\Desktop\\s_proj\\c.txt','r',encoding='utf-8',errors='ignore') 
    
    #对商品类文本做文本处理
    ff=[]
    for j in f4.readlines():
        j=j.replace('\n','')
        ff.append(j)
    print(len(ff))
    
    #tfidf 稀疏矩阵
    tfidf_tuple = tfidf.nonzero()
    tfidf_rows = tfidf_tuple[0]
    tfidf_columns = tfidf_tuple[1]
    size = len(tfidf_columns)
    print('nonzero.size=%s' % size)
    
    # 将TF-IDF>=某一阈值d的数据存入字典,Key为电商索引。
    product_dict = {}
    for i in range(size):
        row = tfidf_rows[i]
        column = tfidf_columns[i]
        tfidf_value = tfidf[row,column]
        if tfidf_value <=0.4:
            continue
        key_words = product_dict.setdefault(row, []) 
        key_word = {}
        key_word["key_word"]=features[column]
        key_word["tfidf_value"]=tfidf_value
        key_words.append(key_word)
    print('product_dict.len=%s' % len(product_dict))
    
    #tfidf提取的所有features计算word2vec相似度
    f=open('gabbage.txt','w',encoding='utf-8',errors='ignore') 
    word2vec={}
    for i in range(size):
        column = tfidf_columns[i]
        cate=word2vec.setdefault(features[column],[])
        for jj in ff:
            try:
                y1 = model.wv.similarity(features[column],jj) 
                insert={"category_name":jj,"similarity":y1}
                cate.append(insert)
            except:
                f.write('')
    print('word2vec.len=%s' % len(word2vec))
    f.close()
    
    #相似度值排序
    import operator
    for k,v in word2vec.items():
        new_dict_list=[]
        s=sorted(v,key=operator.itemgetter("similarity"),reverse=True)
        word2vec[k]=s
        for w in word2vec[k]:
            if w not in new_dict_list:
                new_dict_list.append(w)
        word2vec[k]=new_dict_list
    
    #创建满足某一阈值的tfidf的特征词的相似度的词典
    l=[ll for l in product_dict.keys()for ll in product_dict[l]]
    for k in word2vec.keys():
        for m in l:
            if m["key_word"]==k:
                m["category_names"]=word2vec[k]
    print(len(product_dict))
    
    # 将字典转为数组,索引转为商品名称。
    result=[r for r in listl]
    product_list = []
    for i in product_dict:
        product = {}
        product['product'] = result[i][0]
        product['key_words'] = product_dict[i]
        product_list.append(product)
    print('product_list.len=%s' % len(product_list))
    print(len(product_list))
    
    
    #匹配填充tfidf值满足某一阈值的相似度词典
    f=open('gabbage.txt','w',encoding='utf-8',errors='ignore') 
    # 将TF-IDF>=0。4的数据存入字典,Key为电商索引。
    product_dict = {}
    for i in range(size):
        row = tfidf_rows[i]
        column = tfidf_columns[i]
        tfidf_value = tfidf[row,column]
        if tfidf_value <=0.4:
            continue
        key_words = product_dict.setdefault(row, [])
        for jj in ff:
            try:
                y1 = model.wv.similarity(features[column],jj)  
                insert={'key_word':features[column],'tfidf_value':tfidf_value,'category_names':{'goods_name':jj,'word2vec':y1}}
                key_words.append(insert)
            except:
                f.write('')
    f.close()
    
    #将结果写入json
    import json
    t=open('word2vec_result1.txt','w',encoding='utf-8',errors='ignore')
    json_string = json.dumps(product_list[0:11]).encode('utf-8').decode('unicode_escape')
    print(json_string)
    t.write(json_string)
    t.close()
    展开全文
  • 基于空间分布和信息熵的特征词提取方法 关键字提取技术
  • 用CHI检验提取文本特征词

    千次阅读 2015-11-22 14:02:41
    特征词提取的算法有很多,在此篇博客中讲的是CHI检验。CHI检验让我觉得概率论还是没有白学的。。。 1 CHI检验基础  卡方检定一个应用的场景是独立性检验。“独立性检定”验证从两个变数抽出的配对观察值组是

    0 背景


            还是老师的文本分类的大作业。。。在对文本数据集分词并且除去停用词以后,我们就必须进行文本特征词的提取。所谓特征词就是可以代表此篇文章或者此类文章的一些词语。特征词提取的算法有很多,在此篇博客中讲的是CHI检验。CHI检验让我觉得概率论还是没有白学的。。。

    1  CHI检验基础

        卡方检定一个应用的场景是独立性检验。 “独立性检定”验证从两个变数抽出的配对观察值组是否互相独立(例 如:每次都从A国和B国各抽一个人,看他们的反应是否与国籍无关)。参考维基百科的皮尔森卡方检定,独立性检验的步骤如下:
      1)计算卡方检定的统计值“  \chi^2  ”:把每一个观察值和理论值的差做平方后、除以理论值、再加总。
      2)计算  \chi^2  统计值的 自由度 df ”。
      3)依据研究者设定的 置信水准 查出自由度为  df  的卡方分配临界值,比较它与第1步骤得出的  \chi^2  统计值,推论能否拒 虚无假设
      这些知道大体意思就可以了,上面的步骤是抄的维基百科上的,太学术了,先别打。。。。再看下面的就明白了。。。

    2 CHI检验应用于文本特征词提取

     在文本的特征词提取中,我们关注的是某个词term与类别C的是不是存在比较强的相关性,如果是,那么term就具有表征此类文章的能力,即term可以作为此类文本的特征词。那怎么表示某个词term与某个类别C的相关性呢,没错,CHI检验可以完成这个工作。学习概率论检验这一块的时候我们知道,t检验、卡方检验、F检验开始的时候都必须的有个假设。在文本分类中一般的假设是,“term和C是相互独立的”。接下来我们要算的就是CHI<term,C>的值是多少,这个值越大,就说明与假设的情况偏离的越远,就越说明term和C是相关的。好了,那怎么计算CHI值呢,先上一张图。

    特征选择

    1.属于“体育”

    2.不属于“体育”

    总 

    1.包含“篮球”

    A

    B

    A+B

    2.不包含“篮球”

    C

    D

    C+D

    总 

    A+C

    B+D

         N


       A代表的是体育类文档中包含词语“篮球”的文档数,B,C,D同理。结合上面的讲的独立性检验的步骤,对于此表格的运算步骤如下所示:

       1) 再看标题1下的独立性检验的步骤。对于A所在的表格,A的理论值应该是
                                                
       因为A为实际值,也就是观测值,所以根据步骤1
                                               
       同理有
                           
       最终
                              
       整理有
                         
       因为N,A+C,B+D是确定的,对每一个单词的计算也都是一样的,所以可以把它们省略掉。最终我们只需要计算的是
                              
       其实,我也不懂为啥这四个加一加就是 \chi^2 检验了。。。但是也不需要懂是不?
       
       2)根据自由度df的计算公式df=(r-1)(c-1),可以算出自由度为1。r为表格的行数,c为列数。其实也好理解了,当表格中四个单元格的某一个单元格的数值确定了,其它三个单元格的数值就随之确定了。这不就是自由度为1吗。迎合我们求篮球和体育的问题,自由度为1也就可以理解成,我们只是求“篮球”与体育的相关性。假设上面的四格表变成了(2,3)的表格,那自由度就为2了,那就不仅求的是“篮球”与体育的相关性了,还有“篮球”与娱乐(打比方,也可以是别的类别)的相关性了。
       
       3)置信水准的确定以后,那多少数量的词语表征此类文档就确定了,也就是特征词的个数确定了,也确定了VSM空间向量模型中的维数。那么怎么确定这个置信水准呢?在上面算出每个词语与每个类别的CHI值之后,我们可以选取前a%大的词语作为我们的特征词。至于a的选取问题可以根据分类器的准确率调节。一开始的时候我们可以随便取一个值。

    3. CHI检验的缺点

         在上面的例子中其实可以看出,只要包含“篮球”的文章就会相应的+1,并没有考虑每个词在每篇文章中的词频,所以就是CHI的含义就是“只要出现过”!这样的话就会夸大低频词的作用,因为在选择特征词时把低频词和高频词放在了同样的高度上。这就是著名的“低频词缺陷”!改进的方法有很多种,这是我在网上看到的一种改进方案,不过只是交大作业嘛,所以。。。END!
           
          
    展开全文
  • 全模式,把句子中所有的可以成的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 安装说明 pip install jieba 主要功能 ...
  • 特征提取的目的

    千次阅读 2021-12-07 09:55:46
    特征提取的目的是把样本集从高维特征空间映射到低维特征空间,并使映射后的样本集仍具有良好的可分性。特征提取算法的好坏会影响系统的最终识别效果,同时经过特征提取后的数据集由于维数的减少,会明显减少系统的...
  • 什么是特征工程 比赛会有成绩的提交,跟算法与数据清洗都有关系,也就是特征工程 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个...特征提取/抽取 比如上面这个文章,我想通过这个文章作为训练集,...
  • 文本特征提取方法介绍

    千次阅读 2020-06-09 19:34:39
    TFIDF 法是以特征词在文档d中出现的次数与包含该特征词的文档数之比作为该词的权重,即 其中, Wi表示第i个特征词的权重,TFi(t,d)表示词t在文档d中的出现频率,N表示总的文档数,DF(t)表示包含t的文档数。...
  • 文本之特征提取

    千次阅读 2019-09-27 05:13:07
    文本特征提取有两个非常重要的模型: 词集模型:单词构成的集合,集合中每个元素都只有一个,也即集中的每个单词都只有一个 袋模型:如果一个单词在文档中出现不止一次,并统计其出现的次数(频数) 两者...
  • 真的是看的我神志模糊,...个人理解TF-IDF和CHI就相当于对袋模型的一种改进,不是单纯的算出现次数 那么贝叶斯是怎么实现TF-IDF这些么??毕竟他不是概率啊。。 001 常见向量表达 https://blog.csdn.net/sina...
  • dme-TS中,不再以间空格作为切分标记提取词特征,而是用一种组合统计量(dme)来度量文本中相邻单词之间的关联程度,并以dme度量的弱关联的间位置作为切分点,提取对学习算法真正有意义的语义词特征。实验结果表明,用...
  • 文本特征提取

    万次阅读 多人点赞 2019-03-05 20:36:57
    在自然语言处理中我们把文本数据变成向量数据,在向量数据中我们可以得到很多来自于文本数据当中的语言特性,这种方式叫做文本表示或文本特征构造。 文本特征的通用信息源 文本分类问题当中的对象 :在英文文本...
  • 根据全部语料每个对应的TF-IDF值 每个句子对应全部语料的one-hot编码,将TF-IDF编码作为特征 Python代码 流程很简单,就不复现了,这里有两个使用的方式,第一种是梳理整个流程,第二种是工程上能够简化代码的...
  • 如果一个或短语在某一篇文章中出现的概率很高,并且在其它文章中很少出现,则认为该或短语具有很好的类别区分能力,适合用来分类 TF-IDF的作用 用以评估一个词语对于一个文件或者一个语料库中的其中一份文件的...
  • 这一切的基础就是特征词提取技术了,本文主要围绕关键词提取这个主题进行介绍(英文)。不同版本python混用(官方用法)Python2 和python3 是一个神一般的存在,如何让他们共存呢,直到我用了pycharm我才知
  • word2vec是一组用于生成向量的自然语言处理工具,主要是基于双层神经网络,经过训练后可以为单词生成一个向量空间,为每一 个单词都分配一个向量。在生成的向量空间中,意思越相近的单词向量之间的距离越小,反之...
  • 1 TF-IDF原理 TF-IDF原理在另一篇博客:关键词抽取模型 已经提及,...向量类型:1)一个一列向量的表示方法有Hash算法和word2vec。hash算法将打散成(01010101)的数值,word2vec则同时打散定义成了向量。wor...
  • 文本特征提取袋模型/词集模型,TF-IDF

    万次阅读 多人点赞 2019-05-17 15:34:39
    目录 1. 词集模型 ...3.2 使用现有袋的特征,对其他文本进行特征提取 4.TF-IDF处理 4.1 简介 4.2用sklearn进行TF-IDF预处理 (1)CountVectorizer 结合 TfidfTransformer (2)用 TfidfVectorizer...
  • TF-IDF提取英文文章特征词

    千次阅读 2018-04-08 20:09:40
    上一周信息内容安全老师让我们应python实现英文文本的预处理、并通过计算TF-IDF的值来提取英文的特征词。接下来介绍一下每个子函数的功能。 一、函数功能 1、分词def participles():  这个函数主要是用于英语语句的...
  • 知识点2.1.1 高频词和关键词的区别 知识点2.1.2 基于numpy和pandas的高频词提取 知识点2.1.3 基于nltk的高频词提取 知识点2.1.4 高频词的词云图展示
  • 文本特征提取方法研究

    千次阅读 2016-10-26 13:32:40
    文本特征提取方法研究
  • 特征提取参考文献 参考文献 1、sklearn——CountVetorizer详解
  • 针对同类文本中提取的关键词形式多样,且在相似性与相关性上具有模糊关系,提出一种对词语进行分层聚类的文本特征提取方法。该方法在考虑文本间相同贡献文本相似度的前提下,结合词语相似性与相关性作为语义距离,...
  • 特征提取 --- 中文文本特征抽取

    千次阅读 2019-04-08 09:15:50
    jieba库 ex_1 import jieba def cut_word(text): text = ' '.join(list(jieba.cut(text))) return text ...def cut_chinese_demo2(): ... print("特征名字:\n", transfer.get_feature_names())

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,762
精华内容 21,104
关键字:

特征词提取