P6 文本特征抽取以及中文问题

http://bilibili.com/video/BV184411Q7Ng?p=6

 

 

 

 

 

 

"""
演示字典的特征抽取,
DictVectorizer是一个类的名字
"""
from sklearn.feature_extraction import DictVectorizer


def dictvec():
    """
    字典数据抽取
    :return:
    加入参数sparse=False可以把转换成的数据转换成数组
    """
    dict=DictVectorizer(sparse=False) #实例化 sparse=False
    data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
    print(dict.inverse_transform(data))


    return None


if __name__=="__main__":
    dictvec()

运行结果:

C:\Users\TJ\AppData\Local\Programs\Python\Python37\python.exe D:/qcc/python/mnist/feature_abstract.py
[{'city=北京': 1.0, 'temperature': 100.0}, {'city=上海': 1.0, 'temperature': 60.0}, {'city=深圳': 1.0, 'temperature': 30.0}]

Process finished with exit code 0

"""
演示字典的特征抽取,
DictVectorizer是一个类的名字
 CountVectorizer是一个类的名字,可以用来实例化一个变量
"""
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer

def dictvec():
    """
    字典数据抽取
    :return:
    加入参数sparse=False可以把转换成的数据转换成数组
    """
    dict=DictVectorizer(sparse=False) #实例化 sparse=False
    data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
    print(dict.inverse_transform(data))


    return None


def countvec():
    """
    对文本进行特征值化
    :return:
    """
    cv=CountVectorizer() #实例化一个对象
    data=cv.fit_transform(["life is short,i like python","life is too long,i dislike python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
    print(cv.get_feature_names())
    print(data.toarray())

    return None



if __name__=="__main__":
    countvec()

运行结果:

C:\Users\TJ\AppData\Local\Programs\Python\Python37\python.exe D:/qcc/python/mnist/feature_abstract.py
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
[[0 1 1 1 0 1 1 0]
[1 1 1 0 1 1 0 1]]

Process finished with exit code 0

注解:

  1. 统计两篇文章中所有单词,返回一个列表,重复的单词只统计一次。
  2. 运行结果的下面的二维矩阵说明:针对每篇文章,在词的列表里面统计每个词出现的次数。

 

"""
演示字典的特征抽取,
DictVectorizer是一个类的名字
 CountVectorizer是一个类的名字,可以用来实例化一个变量
"""
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer

def dictvec():
    """
    字典数据抽取
    :return:
    加入参数sparse=False可以把转换成的数据转换成数组
    """
    dict=DictVectorizer(sparse=False) #实例化 sparse=False
    data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
    print(dict.inverse_transform(data))


    return None


def countvec():
    """
    对文本进行特征值化
    :return:
    """
    cv=CountVectorizer() #实例化一个对象
    data=cv.fit_transform(["life is is short,i like python,","life is too long,i dislike python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
    print(cv.get_feature_names())
    print(data.toarray())

    return None



if __name__=="__main__":
    countvec()

运行结果:

C:\Users\TJ\AppData\Local\Programs\Python\Python37\python.exe D:/qcc/python/mnist/feature_abstract.py
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
[[0 2 1 1 0 1 1 0]
[1 1 1 0 1 1 0 1]]

Process finished with exit code 0

 

 

 注解:

  1. 文本特征抽取的应用。
  2. 单个英文字母,不能用于文本分类和情感分析。
"""
演示字典的特征抽取,
DictVectorizer是一个类的名字
 CountVectorizer是一个类的名字,可以用来实例化一个变量
"""
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer

def dictvec():
    """
    字典数据抽取
    :return:
    加入参数sparse=False可以把转换成的数据转换成数组
    """
    dict=DictVectorizer(sparse=False) #实例化 sparse=False
    data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
    print(dict.inverse_transform(data))


    return None


def countvec():
    """
    对文本进行特征值化
    :return:
    """
    cv=CountVectorizer() #实例化一个对象
    data=cv.fit_transform(["人生苦短,我喜欢python,","人生漫长,不用python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
    print(cv.get_feature_names())
    print(data.toarray())

    return None



if __name__=="__main__":
    countvec()

运行结果:

C:\Users\TJ\AppData\Local\Programs\Python\Python37\python.exe D:/qcc/python/mnist/feature_abstract.py
['不用python', '人生漫长', '人生苦短', '我喜欢python']
[[0 0 1 1]
[1 1 0 0]]

Process finished with exit code 0

注解:

  1. 本利想要的结果是,一个词在一个句子或者一篇文章中出现的次数,现在统计的一个句子,所以不是想要的结果。
  2. 对于中文,默认不支持特征抽取。
"""
演示字典的特征抽取,
DictVectorizer是一个类的名字
 CountVectorizer是一个类的名字,可以用来实例化一个变量
"""
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer

def dictvec():
    """
    字典数据抽取
    :return:
    加入参数sparse=False可以把转换成的数据转换成数组
    """
    dict=DictVectorizer(sparse=False) #实例化 sparse=False
    data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
    print(dict.inverse_transform(data))


    return None


def countvec():
    """
    对文本进行特征值化
    :return:
    """
    cv=CountVectorizer() #实例化一个对象
    data=cv.fit_transform(["人生 苦短,我 喜欢 python,","人生漫长,不用 python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
    print(cv.get_feature_names())
    print(data.toarray())

    return None



if __name__=="__main__":
    countvec()

运行结果:

C:\Users\TJ\AppData\Local\Programs\Python\Python37\python.exe D:/qcc/python/mnist/feature_abstract.py
['python', '不用', '人生', '人生漫长', '喜欢', '苦短']
[[1 0 1 0 1 1]
[1 1 0 1 0 0]]

Process finished with exit code 0

注解:

  1. 空格分开的话,可以统计到一个词。

 

 

 注解:

  1. 对文本进行特征值化就是抽取文本中的单词,并统计其在文章中出现的个数。
"""
演示字典的特征抽取,
DictVectorizer是一个类的名字
 CountVectorizer是一个类的名字,可以用来实例化一个变量
"""
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer
import jieba

def dictvec():
    """
    字典数据抽取
    :return:
    加入参数sparse=False可以把转换成的数据转换成数组
    """
    dict=DictVectorizer(sparse=False) #实例化 sparse=False
    data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])      # 调用fit_transform就是把字符串数据转化成特征,返回的是个data
    print(dict.inverse_transform(data))


    return None


def countvec():
    """
    对文本进行特征值化
    :return:
    """
    cv=CountVectorizer() #实例化一个对象
    data=cv.fit_transform(["人生 苦短,我 喜欢 python,","人生漫长,不用 python"])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
    print(cv.get_feature_names())
    print(data.toarray())

    return None



def cutword():
    """
    对中文词进行切分
    :return:
    """
    con1=jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝大多数是死在明天晚上,所以每个人不要放弃今天。")
    con2=jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙是时,我们是自看它的过去")
    con3=jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其有我们所有理解的事物联系")

    #转换成列表
    content1=list(con1)
    content2 = list(con2)
    content3 = list(con3)

    #把列表转换成字符串
    c1=''.join(content1)
    c2 = ''.join(content2)
    c3 = ''.join(content3)

    return c1,c2,c3

def chinesevec():
    """
    中文特征值化
    :return:
    """

    c1,c2,c3=cutword()
    print(c1,c2,c3)

    cv=CountVectorizer() #实例化一个对象
    data=cv.fit_transform([c1,c2,c3])  #逗号隔开的代表两篇文章,调用方法后有一个返回值
    print(cv.get_feature_names())
    print(data.toarray())

    return None

if __name__=="__main__":
    chinesevec()

运行结果:

C:\Users\TJ\AppData\Local\Programs\Python\Python37\python.exe D:/qcc/python/mnist/feature_abstract.py
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\TJ\AppData\Local\Temp\jieba.cache
Loading model cost 0.964 seconds.
Prefix dict has been built successfully.
今天很残酷,明天更残酷,后天很美好,但绝大多数是死在明天晚上,所以每个人不要放弃今天。 我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙是时,我们是自看它的过去 如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其有我们所有理解的事物联系
['了解事物真正含义的秘密取决于如何将其有我们所有理解的事物联系', '今天很残酷', '但绝大多数是死在明天晚上', '你就不会真正了解它', '后天很美好', '如果只用一种方式了解某样事物', '我们是自看它的过去', '我们看到的从很远星系来的光是在几百万年之前发出的', '所以每个人不要放弃今天', '明天更残酷', '这样当我们看到宇宙是时']
[[0 1 1 0 1 0 0 0 1 1 0]
[0 0 0 0 0 0 1 1 0 0 1]
[1 0 0 1 0 1 0 0 0 0 0]]

Process finished with exit code 0

注解:

  1. 运行的结果不是视频讲解的结果。

 

posted on 2020-12-30 18:20  一杯明月  阅读(212)  评论(0编辑  收藏  举报