# n-gram
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
import jieba
data = ["他用报话机向上级呼喊:“为了祖国,为了胜利,向我开炮!向我开炮!",
"记者:你怎么会说出那番话?",
"韦昌进:我只是觉得,对准我自己打,才有可能把上了我哨位的这些敌人打死,或者打下去。"]
data = [" ".join(jieba.lcut(e)) for e in data] # 分词,并用" "连接
vec = CountVectorizer(min_df=1, ngram_range=(1,2))
# ngram_range=(1,1) 表示 unigram, ngram_range=(2,2) 表示 bigram, ngram_range=(3,3) 表示 thirgramX = vec.fit_transform(data) # transform text to metrixvec.get_feature_names() # get features[u’\u4e0a\u7ea7’, u’\u4e0a\u7ea7 \u547c\u558a’, u’\u4e0b\u53bb’, u’\u4e3a\u4e86’, u’\u4e3a\u4e86 \u7956\u56fd’, u’\u4e3a\u4e86 \u80dc\u5229’, u’\u53ea\u662f’, u’\u53ea\u662f \u89c9\u5f97’, u’\u53ef\u80fd’, u’\u53ef\u80fd \u54e8\u4f4d’, u’\u547c\u558a’, u’\u547c\u558a \u4e3a\u4e86’, u’\u54e8\u4f4d’, u’\u54e8\u4f4d \u8fd9\u4e9b’, u’\u5bf9\u51c6’, u’\u5bf9\u51c6 \u81ea\u5df1’, u’\u5f00\u70ae’, u’\u5f00\u70ae \u5f00\u70ae’, u’\u600e\u4e48’, u’\u600e\u4e48 \u8bf4\u51fa’, u’\u6216\u8005’, u’\u6216\u8005 \u4e0b\u53bb’, u’\u6253\u6b7b’, u’\u6253\u6b7b \u6216\u8005’, u’\u62a5\u8bdd\u673a’, u’\u62a5\u8bdd\u673a \u4e0a\u7ea7’, u’\u654c\u4eba’, u’\u654c\u4eba \u6253\u6b7b’, u’\u756a\u8bdd’, u’\u7956\u56fd’, u’\u7956\u56fd \u4e3a\u4e86’, u’\u80dc\u5229’, u’\u80dc\u5229 \u5f00\u70ae’, u’\u81ea\u5df1’, u’\u81ea\u5df1 \u53ef\u80fd’, u’\u89c9\u5f97’, u’\u89c9\u5f97 \u5bf9\u51c6’, u’\u8bb0\u8005’, u’\u8bb0\u8005 \u600e\u4e48’, u’\u8bf4\u51fa’, u’\u8bf4\u51fa \u756a\u8bdd’, u’\u8fd9\u4e9b’, u’\u8fd9\u4e9b \u654c\u4eba’, u’\u97e6\u660c\u8fdb’, u’\u97e6\u660c\u8fdb \u53ea\u662f’]X.toarray()array([[1, 1, 0, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1]])df = pd.DataFrame(X.toarray(), columns=vec.get_feature_names()) # to DataFrame
df.head()| 上级 | 上级 呼喊 | 下去 | 为了 | 为了 祖国 | 为了 胜利 | 只是 | 只是 觉得 | 可能 | 可能 哨位 | … | 觉得 | 觉得 对准 | 记者 | 记者 怎么 | 说出 | 说出 番话 | 这些 | 这些 敌人 | 韦昌进 | 韦昌进 只是 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 0 | 2 | 1 | 1 | 0 | 0 | 0 | 0 | … | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | … | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | … | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
3 rows × 45 columns
版权声明:本文为Sinsa110原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。