全文基于《射雕英雄传》语料库,下面是读入数据的一个基于Pandas的通用操作框架。
读入为数据框
import pandas as pd
from matplotlib import pyplot as plt
%matplotlib inline
# 有的环境配置下read_table出错,也可用用read_csv
raw = pd.read_table("金庸-射雕英雄传txt精校版.txt",
names = ['txt'], encoding ="GBK")
print(len(raw))
raw.head()
7432
txt | |
---|---|
0 | 全本全集精校小说尽在:http://www.yimuhe.com/u/anglewing26... |
1 | 更多资源下载:http://qqzone.ctdisk.com |
2 | ※声明:本电子书仅供读者预览,请在下载24小时内删除,不得用作商业用途;如果喜欢请购买正版图书!※ |
3 | ------------------------------------------ |
4 | “金庸作品集”新序 |
加入章节标识
# 章节判断用变量预处理
def m_head(tmpstr):
return tmpstr[:1]
def m_mid(tmpstr):
return tmpstr.find("回 ")
#取出进行判断的变量
raw['head'] = raw.txt.apply(m_head)
raw['mid'] = raw.txt.apply(m_mid)
raw['len'] = raw.txt.apply(len)#防止特殊情况,设置长度
raw.head()
txt | head | mid | len | |
---|---|---|---|---|
0 | 全本全集精校小说尽在:http://www.yimuhe.com/u/anglewing26... | 全 | -1 | 55 |
1 | 更多资源下载:http://qqzone.ctdisk.com | 更 | -1 | 31 |
2 | ※声明:本电子书仅供读者预览,请在下载24小时内删除,不得用作商业用途;如果喜欢请购买正版图书!※ | ※ | -1 | 49 |
3 | ------------------------------------------ | - | -1 | 42 |
4 | “金庸作品集”新序 | “ | -1 | 9 |
# 章节判断
chapnum = 0
for i in range(len(raw)):
if raw['head'][i] == "第" and raw['mid'][i] > 0 and raw['len'][i] < 30 :
chapnum += 1
if chapnum >= 40 and raw['txt'][i] == "附录一:成吉思汗家族" :
chapnum = 0
raw.loc[i, 'chap'] = chapnum
# 删除临时变量,这里必须删除,否则后续sum函数处会出错
del raw['head']
del raw['mid']
del raw['len']
raw.head()
txt | chap | |
---|---|---|
0 | 全本全集精校小说尽在:http://www.yimuhe.com/u/anglewing26... | 0.0 |
1 | 更多资源下载:http://qqzone.ctdisk.com | 0.0 |
2 | ※声明:本电子书仅供读者预览,请在下载24小时内删除,不得用作商业用途;如果喜欢请购买正版图书!※ | 0.0 |
3 | ------------------------------------------ | 0.0 |
4 | “金庸作品集”新序 | 0.0 |
提取出所需章节
raw[raw.chap == 1].head()
txt | chap | |
---|---|---|
33 | 第一回 风雪惊变 | 1.0 |
34 | 1.0 | |
35 | 1.0 | |
36 | 那说话人五十来岁年纪,一件青布长袍早洗得褪成了蓝灰带白。只听他两片梨花木板碰了几下,左手... | 1.0 |
37 | 几处败垣围故井,向来一一是人家。” | 1.0 |
rawgrp = raw.groupby('chap')
chapter = rawgrp.agg(sum) # 只有字符串列的情况下,sum函数自动转为合并字符串
chapter = chapter[chapter.index != 0]#排除前言和附录
gensim的安装
pip install genism
安装完成后如果使用word2vec时报错,建议去gensim官网下载MS windows install的exe程序进行安装:https://pypi.python.org/pypi/gensim
建立字典
Dictionary类用于建立word<->id映射关系,把所有单词取一个set(),并对set中每个单词分配一个Id号的map
class gensim.corpora.dictionary.Dictionary(
documents=None : 若干个被拆成单词集合的文档的集合,一般以list in list形式出现
prune_at=2000000 : 字典中的最大词条容量
)
token2id 字典形式
dict of (str, int) – token -> tokenId.
id2token:反过来的字典
dict of (int, str) – 反向token2id,以延迟方式初始化以节省内存。
dfs
dict of (int, int) – Document frequencies: token_id -> in how many documents contain this token.(第几个词条被几个文档包含)
num_docs
int – 处理的文档数。
num_pos
int – 语料库位置的总数(处理过的单词数)。
num_nnz
int – Total number of non-zeroes in the BOW matrix.(矩阵中非零的总数。)
from gensim.corpora import Dictionary
texts = [['human', 'interface', 'computer']]
dct = Dictionary(texts) # fit dictionary
dct.num_nnz
3
# 向字典增加词条
dct.add_documents([["cat", "say", "meow"], ["dog"]])
dct.token2id#结果仍然是按照流水号
{'cat': 3,
'computer': 0,
'dog': 6,
'human': 1,
'interface': 2,
'meow': 4,
'say': 5}
补充:密集向量和稀疏向量的区别: 密集向量的值就是一个普通的Double数组 而稀疏向量由两个并列的 数组indices和values组成 例如:向量(1.0,0.0,1.0,3.0)用密集格式表示为[1.0,0.0,1.0,3.0],用稀疏格式表示为(4,[0,2,3],[1.0,1.0,3.0]) 第一个4表示向量的长度(元素个数),[0,2,3]就是indices数组,[1.0,1.0,3.0]是values数组 表示向量0的位置的值是1.0,2的位置的值是1.0,而3的位置的值是3.0,其他的位置都是0
dct.doc2bow( # 转换为BOW格式:list of (token_id, token_count)
document : 用于转换的词条list
allow_update = False : 是否直接更新所用字典
return_missing = False : 是否返回新出现的(不在字典中的)词
)
[(0, 2), (1, 2)],表明在文档中id为0,1的词汇各出现了2次,至于其他词汇则没有出现
return_missing = True时,输出list of (int, int), dict of (str, int)
dct.doc2bow(["this", "is", "cat", "not", "a", "dog"])
[(3, 1), (6, 1)]
dct.doc2bow(["this", "is", "cat", "not", "a", "dog"], return_missing = True)
#同时返回新出现的(不在字典中的)词
([(3, 1), (6, 1)], {'a': 1, 'is': 1, 'not': 1, 'this': 1})
可考虑的思路:
1.从稀疏格式自行转换。
2.直接生成文档-词条矩阵。(方便常用)
doc2idx( # 转换为list of token_id
document : 用于转换的词条list
unknown_word_index = -1 : 为不在字典中的词条准备的代码
按照输入list的顺序列出所出现存在的各词条ID
dct.doc2idx(["this", "is", "a", "dog", "not", "cat"])#输出结果的id
[-1, -1, -1, 6, -1, 3]
基本程序框架:
原始文档分词并清理,拼接为同一个df,汇总并转换为文档-词条矩阵格式,最后去除低频词
# 设定分词及清理停用词函数
# 熟悉Python的可以使用 open('stopWord.txt').readlines() 获取停用词list,效率更高
stoplist = list(pd.read_csv('停用词.txt', names = ['w'], sep = 'aaa',
encoding = 'utf-8', engine='python').w)
import jieba
def m_cut(intxt):
return [ w for w in jieba.cut(intxt)
if w not in stoplist and len(w) > 1 ]
# 设定数据框转换函数
def m_appdf(chapnum):
tmpdf = pd.DataFrame(m_cut(chapter.txt[chapnum + 1]), columns = ['word'])
tmpdf['chap'] = chapter.index[chapnum]
# tmpdf['chap'] = chapnum+1# 也可以直接 = chapnum + 1(等同于上一句)
return tmpdf
# 全部读入并转换为数据框
df0 = pd.DataFrame(columns = ['word', 'chap']) # 初始化结果数据框
for i in range(len(chapter)):
df0 = df0.append(m_appdf(i))#将被 append 的对象添加到调用者的末尾
df0.tail()
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\lenovo\AppData\Local\Temp\jieba.cache
Loading model cost 0.697 seconds.
Prefix dict has been built successfully.
word | chap | |
---|---|---|
6045 | 黄蓉 | 40.0 |
6046 | 事迹 | 40.0 |
6047 | 神雕侠侣 | 40.0 |
6048 | 中续 | 40.0 |
6049 | 叙述 | 40.0 |
# 输出为序列格式
df0.groupby(['word', 'chap']).agg('size').tail(10)#分组统计出词频
word chap
龙绡 8.0 1
龙行虎步 30.0 1
龙语 28.0 1
龙飞 36.0 1
37.0 2
龙马 5.0 1
龙骨 19.0 1
20.0 1
龟兹 30.0 1
龟息功 37.0 1
dtype: int64
# 直接输出为数据框
t2d = pd.crosstab(df0.word, df0.chap)
len(t2d)
43931
t2d.head()
chap | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 6.0 | 7.0 | 8.0 | 9.0 | 10.0 | ... | 31.0 | 32.0 | 33.0 | 34.0 | 35.0 | 36.0 | 37.0 | 38.0 | 39.0 | 40.0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
word | |||||||||||||||||||||
1265 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Beatrice | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Butt | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Charlotte | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Dark | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
5 rows × 40 columns
# 计算各词条的总出现频次,准备进行低频词删减
totnum = t2d.agg(func = 'sum', axis=1)#交叉表横向词条相加得到词频
totnum
word
1265 1
Beatrice 1
Butt 1
Charlotte 1
Dark 1
..
龙飞 3
龙马 1
龙骨 2
龟兹 1
龟息功 1
Length: 43931, dtype: int64
t2dclean = t2d.iloc[list(totnum >= 10)]#去除词频小于10的词条
t2dclean.T.head()
word | 一世 | 一个 | 一个个 | 一个多 | 一个月 | 一举 | 一事 | 一人 | 一人道 | 一代 | ... | 默写 | 默然不语 | 默默 | 黯然 | 鼻子 | 鼻息 | 齐名 | 齐向 | 齐声 | 龙王 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
chap | |||||||||||||||||||||
1.0 | 0 | 30 | 1 | 0 | 1 | 0 | 0 | 7 | 0 | 0 | ... | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 4 | 0 |
2.0 | 0 | 39 | 0 | 0 | 1 | 0 | 0 | 8 | 0 | 0 | ... | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 |
3.0 | 0 | 30 | 0 | 0 | 0 | 0 | 0 | 10 | 0 | 0 | ... | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 16 | 0 |
4.0 | 1 | 45 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | ... | 0 | 1 | 0 | 0 | 2 | 0 | 0 | 0 | 4 | 0 |
5.0 | 1 | 31 | 1 | 1 | 0 | 0 | 0 | 5 | 0 | 0 | ... | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 3 | 0 |
5 rows × 4052 columns
文本信息在向量化之前很难直接纳入建模分析,考虑到这一问题,专门用于数据挖掘的sklearn库提供了一个从文本信息到数据挖掘模型之间的桥梁,即CountVectorizer类,通过这一类中的功能,可以很容易地实现文档信息的向量化。
class sklearn.feature_extraction.text.CountVectorizer(
input = 'content' : {'filename', 'file', 'content'}
filename为所需读入的文件列表, file则为具体的文件名称。
encoding='utf-8' : 文档编码
stop_words = None : 停用词列表,当analyzer == 'word'时才生效(针对拉丁语)
min_df / max_df : float in range [0.0, 1.0] or int, default = 1 / 1.0
词频绝对值/比例的阈值,在此范围之外的将被剔除
小数格式说明提供的是百分比,如0.05指的就是5%的阈值
)
CountVectorizer.build_analyzer()
返回文本预处理和分词的可调用函数
from sklearn.feature_extraction.text import CountVectorizer
countvec = CountVectorizer(min_df = 2) # 在两个以上文档中出现的才保留
analyze = countvec.build_analyzer()
analyze('郭靖 和 哀牢山 三十六 剑 。')
['郭靖', '哀牢山', '三十六']
CountVectorizer.fit_transform(raw_documents)
对文档进行学习(处理),返回term-document matrix(词条文档矩阵)
等价于先调用fit函数,然后再调用transform函数,但是效率更高
countvec.fit(['郭靖 和 黄蓉 哀牢山 三十六 剑 。', '黄蓉 和 郭靖 郭靖'])
CountVectorizer(min_df=2)
countvec.get_feature_names() # 词汇列表,实际上就是获取每个列对应的词条
['郭靖', '黄蓉']
countvec.vocabulary_ # 词条字典
{'郭靖': 0, '黄蓉': 1}
x = countvec.transform(['郭靖 和 黄蓉 哀牢山 三十六 剑 。', '黄蓉 和 郭靖 郭靖'])
type(x)
scipy.sparse.csr.csr_matrix
x.todense() # 将稀疏矩阵直接转换为标准格式矩阵
matrix([[1, 1],
[2, 1]], dtype=int64)
countvec.fit_transform(['郭靖 和 哀牢山 三十六 剑 。', '黄蓉 和 郭靖 郭靖'])
# 一次搞定
<2x1 sparse matrix of type ''
with 2 stored elements in Compressed Sparse Row format>
将章节文档数据框处理为空格分隔词条的文本格式
使用fit_transform函数生成bow稀疏矩阵
转换为标准格式的d2m矩阵
rawchap = [ " ".join(m_cut(w)) for w in chapter.txt.iloc[:5]] #取前五章
rawchap[0]
'第一回 风雪 惊变 说话 五十 年纪 一件 青布 长袍 早洗 褪成 蓝灰 带白 两片 梨花 木板 几下 左手 竹棒 羯鼓 敲起 唱道 小桃 无主自 开花 烟草 茫茫 晚鸦 几处 败垣围 故井 向来 说话 木板 几下 说道 这首 七言诗 兵火 过后 家家户户 残瓦 破败 之地 小人 叶老汉 一家 四口 悲欢离合 他四人 金兵 冲散 好容易 团聚 欢天喜地 回到 故乡 卫州 房屋 金兵 干干净净 无可奈何 只得 京城 汴梁 生计 料想 天有不测风云 人有旦夕祸福 他四人 刚进 汴梁 迎面 一队 金兵 带兵 头儿 一双 三角 眼觑 叶三姐 美貌 下马 一把 抱住 哈哈大笑 放上 马鞍 说道 小姑娘 回家 服侍 老爷 叶三姐 拼命 挣扎 那金兵 长官 喝道 不肯 父母 兄弟 提起 狼牙棒 棒打 叶四郎 头上 登时 脑浆 迸裂 一命呜呼 阴世 新添 枉死鬼 阳间 不见 少年人 叶老汉 妈妈 搂住 儿子 尸体 放声大哭 长官 提起 狼牙棒 一棒 一个 叶三姐 啼哭 说道 长官 凶恶 回家 长官 大喜 叶三姐 带得 回家 叶三姐 不防 抢步 拔出 长官 腰刀 对准 心口 挺刀 说时迟 那时快 钢刀 刺去 眼见 可报 父母 兄弟 大仇 长官 久经 战阵 武艺 精熟 顺手 一推 叶三姐 登时 长官 一声 贱人 叶三姐 举起 钢刀 脖子 中一勒 可怜 花容月貌 无双 惆怅 芳魂 九泉 一段 一段 村民 无不 咬牙切齿 愤怒 叹息 那人 众位 欺心 举头 三尺 神明 作恶 报应 天下 凶徒 人吃人 那金兵 大宋 天下 杀人放火 奸淫掳掠 无恶不作 不见 报应 只怪 大宋 官家 不争气 中国 本来 兵多将广 见到 金兵 到来 远远地 逃之夭夭 剩下 老百姓 遭殃 好似 叶三姐 一家 惨祸 江北 之地 成千成万 家常便饭 诸君 江南 天堂 怕只怕 金兵 何日 到来 宁作 太平 莫为 乱世 小人 张十五 今日 服侍 众位 听客 一段 说话 叫作 叶三姐 节烈 话本 说彻 散场 两片 梨花 木板 啪啪 一阵 托出 一只 盘子 村民 有人 拿出 两文 三文 放入 木盘 霎时间 六七十 张十五 铜钱 放入 囊中 起行 村民 走出 一个二十 大汉 说道 北方 北方 口音 张十五 身材 魁梧 浓眉大眼 大汉 小弟 做东 三杯 十五大 说道 素不相识 怎敢 叨扰 大汉 喝上 三杯 相识 名叫 郭啸天 指着 身旁 一个 白净 面皮 汉子 这位 杨铁心 杨兄弟 适才 二人 说唱 叶三姐 节烈 说得好 几句话 想要 请问 十五道 今日 得遇 郭杨 二位 有缘 郭啸天 张十五 来到 村头 一家 酒店 饭桌 旁坐 酒店 主人 跛子 两根 拐杖 慢慢 两壶 黄酒 一碟 蚕豆 一碟 花生 一碟 豆腐干 另有 三个 切开 咸蛋 自行 门口 板凳 抬头 天边 正要 落山 太阳 三人望 一眼 郭啸天 张十五 两杯 说道 乡下 地方 初二 十六 下酒 之物 莫怪 十五道 两位 口音 遮莫 北方 杨铁心 兄弟 山东 人氏 受不了 金狗 肮脏 三年 前来 人情 听得 说道 江南 犹似 天堂 怕只怕 金兵 何日 到来 金兵 打过 江来 张十五 江南 花花世界 遍地 金银 放眼 美女 金兵 一日 不想 他来 不来 拿主意 金国 临安 宋朝廷 郭啸天 杨铁心 齐感 诧异 同声 问道 却是 怎生 十五道 中国 百姓 女真人 多上 一百倍 朝廷 忠臣 良将 一百个 一个 金兵 抵挡 我大宋 北方 半壁江山 当年 徽宗 钦宗 高宗 父子 三人 送给 金人 三个 皇帝 任用 奸臣 欺压百姓 出力 抵抗 金兵 大将 罢免 罢免 杀头 杀头 花花 江山 双手 却之不恭 只得 朝廷 任用 奸臣 地下 金兵 驾到 郭啸天 伸手 桌上 重重 一拍 杯儿 筷儿 碟儿 说道 十五道 想当年 宗道君 皇帝 一心 只想 长生不老 神仙 所用 奸臣 蔡京 专帮 皇帝 搜括 百姓 无耻之徒 童贯 梁师成 只会 吹牛拍马 太监 李邦彦 皇帝 嫖院 玩耍 浪子 道君 皇帝 正事 诸般 不理 整日 求仙 写字 画画 便是 找寻 稀奇古怪 花木 石头 金兵 眼前 束手无策 一缩 皇位 传给 儿子 钦宗 忠臣 李纲 守住 京城 汴梁 各路 大将 率兵 勤王 金兵 攻打 不进 只得 退兵 料想 钦宗 听信 奸臣 李纲 罢免 不用 威名 素著 能征惯战 宿将 信用 一个 自称 天神 天将 会得 呼风唤雨 骗子 郭京 天将 守城 天将 理睬 京城 不破 终于 徽宗 钦宗 金兵 两个 昏君 自作自受 害苦 中国 千千万万 百姓 郭啸天 杨铁心 越怒 郭啸天 靖康 年间 徽钦 二帝 金兵 这件 大耻 听得 天神 天将 听见 只道 说笑话 难道真 糊涂 十五道 杨铁心 康王 南京 接位 皇帝 手下 韩世忠 岳爷爷 忠勇 大将 本来 大可 发兵 北伐 直捣黄龙 收复 京城 汴梁 难事 只恨 秦桧 奸贼 心想 议和 岳爷爷 害死 张十五 杨二人 一杯 一口 饮干 说道 岳爷爷 两句诗 壮志 饥餐 胡虏 笑谈 渴饮 匈奴血 两句诗 说出 中国 全国 百姓 心里话 秦桧 这大 奸臣 运气 可惜 迟生 六十年 郭啸天 问道 六十年 十五道 两位 英雄气概 豪杰 身手 临安 奸臣 一把 揪住 三个 不用 蚕豆 冷酒 人大 杨铁心 一壶酒 喝完 一壶 三人 不住 痛骂 秦桧 跛子 一碟 蚕豆 一碟 花生 三人 痛快 两声 冷笑 杨铁心 曲三 秦桧 跛子 三道 想要 岳爷爷 议和 罪魁祸首 秦桧 三人 诧异 问道 秦桧 三道 秦桧 宰相 议和 议和 宰相 岳爷爷 一心一意 要灭 金国 迎接 徽钦 二帝 回来 两个 皇帝 回来 高宗皇帝 几句话 一跷 一拐 坐在 木凳 抬头 望天 一动不动 出神 这曲 容貌 四十 年纪 弓腰 曲背 鬓边 见白 背后 倒似 老头子 模样 门外 一个 女孩子 声音 老虎 三只 老虎 爹爹 下酒 老虎 老虎 一只 公鸡 门外 扑进来 跟着 一个 女孩 双手 烧火 火叉 进门 女孩 五六岁 年纪 头发 两根 小辫子 满脸 泥污 身上 衣服 泥污 泥潭 爬起来 老虎 曲三 脸上 露出 笑容 显得 慈爱 乖宝 几只 老虎 女孩 着火 追赶 公鸡 三只 老虎 一只 六只 五只 爹爹 下酒 乖宝 一只 雄鸡 飞扑 出门 女孩 挺火叉 半晌 十五道 这位 兄弟 害死 岳爷爷 罪魁祸首 秦桧 高宗皇帝 高宗皇帝 原本 无耻 事情 自然 郭啸天 问道 无耻 十五道 当年 岳爷爷 几个 胜仗 金兵 血流成河 尸积 如山 逃命 之力 招架 之功 北方 中国 义民 起兵 鞑子 后路 手忙脚乱 魂不附体 高宗 送到 降表 投降 求和 金人 皇帝 自然 大喜若狂 说道 议和 先得 岳飞 秦桧 定下 奸计 风波 害死 岳爷爷 绍兴 十一年 十二月 岳爷爷 遭害 一个月 绍兴 十二年 正月 和议 成功 宋金 两国以 水中 流为界 高宗皇帝 向金国 称臣 这道 降表是 怎生 书写 杨铁心 那定 不要脸 十五道 可不是 这道 降表 记得 高宗皇帝 名叫 赵构 降表中 写道 构言 蒙恩造 许备 藩国 世世 子孙 谨守 臣节 皇帝 生辰 正旦 遣使 称贺 不绝 岁贡 二十五万两 二十五万匹 奴才 世世 子孙 金国皇帝 奴才 奴才 不打紧 中国 百姓 可不是 跟着 奴才 一声 郭啸天 桌上 重重 一记 震倒 一只 酒杯 水流 满桌 怒道 不要脸 不要脸 这鸟 皇帝 算是 一门 皇帝 十五道 全国 军民 听到 讯息 无不 愤慨 之极 淮水 以北 百姓 眼见 河山 恢复 无望 更是 伤心 泣血 高宗 宝座 坐得 稳若 泰山 秦桧 大功 秦桧 本来 封到 鲁国公 加封 太师 荣宠 无比 权势 熏天 高宗 孝宗 孝宗 传光宗 金人 占定 半边 江山 光宗 传到 当今 天子 庆元 皇帝 手里 这位 宰相 日子 摇头 郭啸天 乡下 地方 尽说 无妨 临安 城里 惹祸 宰相 一个 大大的 奸臣 祸国殃民 本事 秦桧 拜把子 兄弟 张十五 眼前 胆小 言无忌 杯酒 说道 叨扰 两位 小人 一句 相劝 两位 血性汉子 说话 行事 小心 惹祸 时势 老百姓 口苦 日子 山外 青山 楼外楼 西湖 歌舞 几时休 暖风 熏得 游人 杭州 汴州 杨铁心 问道 四句 故事 十五道 故事 宋君臣 只顾 西湖 边上 饮酒作乐 观赏 歌舞 打算 世世代代 杭州 当作 京师 再也 不想 收复失地 汴梁 旧京 张十五 醺醺 大醉 这才 告辞 脚步 踉跄 向东 临安 口中 兀自 喃喃地 岳飞 满江红 句子 靖康 犹未雪 臣子 郭啸天 酒钱 杨铁心 回家 两人 比邻而居 行得 十余丈 家门口 郭啸天 浑家 李氏 赶鸡入 哥儿俩 叔叔 嫂子 我家 吃饭 一只 杨铁心 今晚 又扰 嫂子 家里 鸡鸭 白费 粮食 舍得 一只 两只 李氏 嫂子 心好 鸡鸭 养大 心来 杨铁心 哭哭啼啼 好笑 今儿 打些 野味 明儿 大哥 大嫂 郭啸天 兄弟 今儿 哥儿 远处 几人 大声 吆喝 快给我 站住 黑影 晃动 一人 闪进 林中 光照 身上 杨二人 分明 大奇 那人撑 两根 拐杖 却是 村头 酒店 跛子 曲三 只见 地下 一撑 发出 一声 飞身 树后 这一下 高明 之极 轻身 功夫 郭杨 两人 不约而同 伸出 一手 互握 惊诧 万分 牛家村 三年 不知 跛子 曲三 武功 长草 之中 稍动 脚步 声响 三个 追到 林边 低声 商议 几句 一步步 踏入 林来 三人 武官 装束 手中 青光 闪烁 各握 单刀 一人 大声 喝道 跛子 老子 见到 跪下 投降 三只 树后 不动 三名 武官 挥动 单刀 呼呼 渐渐 走近 间波 一声 曲三右 树后 正中 一名 武官 胸口 势道 武官 地下 两名 武官 挥动 单刀 向曲 曲三右 地下 一撑 左跃开 数尺 避开 单刀 左拐 一名 武官 面门点 武官 武功 自不弱 挺刀 曲三 不让 单刀 碰到 拐杖 左拐 收回 右拐 另一名 武官 腰间 只见 双拐 此起彼落 快速 无伦 一拐 支持 身子 只余一 拐空 对敌 丝毫 落下风 杨二人 背上 负着 包裹 累赘 一会 一名 武官 钢刀 包裹 之上 当啷 一声 包裹 破裂 无数 物事 曲三乘 欢喜 大叫 之际 拐挥出 一声 武官 顶门 中拐 余下 人大 转身 脚步 甚快 数丈 曲三 右手 怀中 跟着 扬手 月光 只见 一块 圆盘 黑物 轻响 嵌入 武官 后脑 武官 惨声长 单刀 脱手 双手 乱舞 仰天 缓缓 倒下 扭转 几下 眼见 不活 杨二人 跛子 曲三于 连毙 三人 武功 之高 生平 从来未 心中 怦怦 大气 喘上 一口 击杀 命官 犯下 滔天大罪 发觉 杀人灭口 兄弟俩 万万 敌手 转过身 缓缓 说道 郭兄 杨兄 杨二人 大吃一惊 只得 草丛 中长 身而起 手中 紧紧 握住 猎叉 杨铁心 郭啸天 手中 猎叉 一眼 随即 踏上 两步 曲三 微笑 杨兄 杨家枪 这猎 义兄 一对 短戟 兵刃 可太 身前 好好 义气 杨铁心 说穿 心事 手足无措 曲三 郭兄 双戟 在手 两位 合力 斗得 郭啸天 摇头 斗不过 兄弟俩 有眼无珠 老兄 牛家村 同住 一年 有余 全没 老兄 身怀绝技 高手 曲三是 一年 因死 妻子 不愿 原地 牛家村 来开 家小 酒店 曲三 摇摇头 口气 说道 双腿 说得上 绝技 绝技 显得 意兴阑珊 当年 料理 三个 宫中 侍卫 用得着 费事 不中用 不中用 杨二人 对望一眼 接口 三道 两位 跛子 一个 尸首 行不行 杨二人 对望一眼 杨铁心 二人 用猎 地下 大坑 三具 尸体 搬入 一具 杨铁心 黑色 盘形 之物 兀自 武官 后脑 数寸 右手 运劲 着手 重甸甸 铁铸 八角形 八卦 尸身 拭去 血渍 交给 曲三 三道 劳驾 八卦 收入 囊中 外袍 地下 捡起 散落 各物 放入 包起 杨二人 搬土 掩埋 尸首 斜眼 三个 长长的 卷轴 另有 亮晶晶 金器 玉器 曲三 留下 一把 金壶 一只 金杯 包入 交给 杨二人 物事 临安 皇宫 中盗 皇帝 害苦 百姓 百姓 身上 搜刮 金银 算不得 贼赃 两件 金器 送给 两位 杨二人 听说 竟敢 皇宫 劫盗 大内 财物 惊呆 伸手 曲三 厉声 两位 不肯 郭啸天 无功不受禄 东西 今晚 兄弟俩 自然 泄漏 一字 半句 老兄 放心 三道 我怕 泄漏 秘密 二人 底细 早就 清清楚楚 今晚 岂能 二位 活着 离开 郭兄 梁山泊 好汉 地佑星 赛仁贵 郭盛 后代 家传 只不过 变长 化单 杨兄 祖上 杨再兴 岳爷爷 麾下 名将 二位 忠义 北方 沦陷 二人 流落江湖 八拜 为交 义结金兰 牛家村 居住 杨二人 身世 来历 一清二楚 更是 惊讶 只得 点头称是 三道 二位 祖宗 郭盛 杨再兴 本来 绿林好汉 归顺 朝廷 为大宋 出力 劫盗 不义之财 祖宗 干过 两件 金器 收是 不收 杨铁心 寻思 不收 得罪 双手 接过 说道 多谢 曲三霁然色 提起 包裹 背上 说道 回去 三人 出林 三道 今晚 皇帝 所画 两幅 一张 家伙 皇帝 翎毛 丹青 瘦金体 书法 委实 妙绝 天下 杨二人 翎毛 丹青 瘦金体 书法 唯唯 而应 一会 杨铁心 轻声道 日间 说话 言道 我大宋 半壁江山 这道 皇帝 手里 东西 老兄 甘冒 地到 皇宫 曲三 微笑 郭啸天 这道 皇帝 画得 一笔 好画 写得 一手 好字 聪明 得紧 可惜 专心 皇帝 小时候 爹爹 一个 文学 只能 专心 一件 一事无成 三道 资质 寻常 天下 尽有 聪明绝顶 文才 武功 琴棋书画 算数 韬略 医卜 星相 奇门 五行 无一 无一不精 只不过 见不着 抬起头来 天边 一轮 残月 长叹一声 月光 映照 杨二人 眼角 渗出 几点 泪水 杨二人 回到 家中 两件 金器 深深 埋入 后院 地下 妻室 吐露 半句 两人 一如 往日 耕种 打猎 为生 习练 兵器 拳脚 两人 提及 此事 两人 酒店 对饮 几壶 跛子 曲三 酒来 蚕豆 花生 下酒 之物 一跷 一拐 走开 坐在 门边 大江 默默 心事 那晚 林中 夜斗 不曾有过 回事 杨二人 照样 会钞 一如 往日 眼色 带上 几分 敬畏 之意 五六岁 小女儿 捉鸡 追狗 爹爹 胡言乱语 一番 曲三 妻室 照顾 一个 小女儿 着实 不易 秋尽冬 冷似 一日 晚间 半夜 北风 起雪来 第二日 下得 银絮 飞天 琼瑶 匝地 四下里 白茫茫 杨铁心 浑家 包氏 今晚 整治 酒肴 义兄 夫妇 饮酒 赏雪 饭后 两个 葫芦 村头 酒店 沽酒 一对 板门 紧紧 酒帘 杨铁心 几下 曲三哥 三斤 应声 走到 窗边 一张 桌上 灰尘 积得 厚厚的 心想 几天 村头 曲三 在家 可别 小女儿 坐在 地下 口中 儿歌 玩弄 泥巴 杨铁心 心想 女孩 癫癫 傻傻 平日 胡说八道 料想 问不出 冲风 冒雪 五里 红梅 村去 一只 回到 家来 浑家 整治 浑家 包氏 闺名惜 红梅 私塾 教书先生 女儿 杨铁心 一年 当晚 包氏 一只 白菜 豆腐 粉丝 放入 一只 瓦罐 炭火 再切 一盘 腊鱼 腊肉 傍晚 隔壁 郭啸天 夫妇 饮酒 郭啸天 欣然 浑家 李氏 因有 身孕 几日 呕酸 东西 推辞 身子 壮健 无别碍 李氏 名单 一个 萍字 包惜弱 有如 姊妹 两人 房中 一阵子 包惜弱 热茶 这才 回家 张罗 丈夫 郭啸天 炭炉 桌上 两人 吃喝 郭啸天 弟妹 快来 杨二人 交好 豪杰 之士 乡下人 讲究 男女 避嫌 礼法 包惜弱 微笑 答应 炭炉 中添 一只 酒杯 坐在 丈夫 下首 郭啸天 三人 热闹 回家 妻子 杨二人 多久 桌大骂 李萍 哥儿俩 生气 杨铁心 临安 朝廷 混帐 郭啸天 昨儿 众安 桥头 喜雨 茶楼 听人 谈到 宰相 那人 有头有尾 想来 不假 一个 官员 上书 禀报 公文 注明 并献 字样 这贼 宰相 压根儿 文书 岂有此理 杨铁心 皇帝 宰相 宰相 官吏 临安 涌金 门外 黄大哥 一日 山边 砍柴 见到 官兵 一群 官儿 却是 丞相 百官 郊外 游乐 自管 砍柴 理会 竹篱茅舍 绝妙 山野 风光 可惜 鸡鸣犬吠 之声 说完 草丛里 汪汪 汪地 包惜弱 这狗儿 倒会 凑趣 杨铁心 凑趣 那狗子 一会 草丛 公鸡 啼声 跟着 一个 草丛 狗子 公鸡 临安 堂堂 府尹 赵大人 包惜弱 直叫 郭啸天 赵大人 这一扮 狗叫 鸡啼 高升 杨铁心 自然 四人 一会 门外 雪下 热酒 下肚 四人 身上 暖烘烘 李萍 有孕 凑趣 略略 沾唇 东边 路上 传来 一阵 踏雪 之声 脚步 起落 极快 四人 转头 望去 道士 那道士 头戴 斗笠 身披 蓑衣 全身 白雪 背上 斜插 一柄 长剑 黄色 风中 笔直 扬起 风雪 满天 大步 独行 气概 非凡 郭啸天 道士 身上 功夫 好汉 没个 名堂 不好 请教 杨铁心 不错 几杯 交交 朋友 两人 生性 好客 离座 出门 那道人 晃眼 十余丈 发足 奔跑 轻功 所属 罕见 两人 一眼 惊异 杨铁心 扬声大 道长 请留步 喊声 那道人 倏地 回身 点头 杨铁心 天冻 大雪 道长 何不 几杯 解解 寒气 那道人 冷笑 一声 健步如飞 来到 门外 脸上 竟尽 鄙夷不屑 之色 冷然 留步 居心 爽爽快快 杨铁心 心想 好意 喝酒 道人 恁地 无礼 扬头 不睬 郭啸天 抱拳 兄弟 正自 烤火 饮酒 道长 冒寒 独行 斗胆 相邀 冲撞 莫怪 那道人 双眼 一翻 声道 好好 喝酒 喝酒 大踏步 杨铁心 更是 气恼 伸手 抓住 左腕 往外 一带 喝道 请教 道长 法号 忽觉 那道人 滑如游 掌中 溜出 不妙 正待 退开 手腕 一紧 道人 抓住 霎时之间 便似 一个 铁圈 急忙 运劲 抵御 整条 右臂 酸麻 无力 腕上 奇痛 彻骨 郭啸天 义弟 满脸 涨得 通红 吃亏 心想 本是 好意 结交 贸然 动手 得罪 江湖 好汉 抢过去 道长 那道人 冷笑 两声 放脱 杨铁心 手腕 堂上 大模大样 居中 说道 两个 明明 山东 大汉 假扮 临安 乡农 可惜 满口 山东 改不了 庄稼汉 怎会 功夫 说话 山东 口音 杨铁心 走进 内室 抽屉 里取 匕首 放在 怀里 这才 回到 外堂 杯酒 一杯 默然不语 那道人 门外 大雪 饮酒 说话 微微 冷笑 郭啸天 满脸 敌意 疑心 酒中作 手脚 取过 道人 面前 酒杯 杯中酒 一口 说道 酒冷得 道长 一杯 一杯 那道人 接过 一口 说道 酒里 蒙汗药 杨铁心 焦躁 发作 好意 饮酒 起心害 道人 说话 不三不四 没人 那道人 一声 理会 取过 酒壶 自斟自酌 连干 三杯 蓑衣 斗笠 地下 郭两人 细看 道人 只见 三十 年纪 双眉斜 脸色红润 方面大耳 目光炯炯 跟着 背上 革囊 侧过 一倒 一声 郭二人 起身 革囊 滚出来 竟是 血肉模糊 人头 包惜弱 惊叫 逃进 内堂 李萍 杨铁心 伸手 怀中 匕首 那道人 革囊 一抖 跌出 两团 血肉模糊 东西 一块 一块 像是 猪心 猪肝 便是 人心 人肝 杨铁心 喝道 匕首 出怀 疾向 那道人 胸口 刺去 道人 冷笑 鹰爪 动手 左手掌 手腕 一击 杨铁心 腕上 一阵 酸麻 五指 无力 匕首 夹手 夺去 郭啸天 看得 大惊 心想 义弟 名将 家传 武艺 平日 较量 武功 稍逊 一筹 道人 竟视 有如 无物 一手 江湖 相传 空手 白刃 绝技 功夫 听闻 没见 惟恐 义弟 受伤 俯身 举起 板凳 只待 道人 匕首 刺来 举凳 那道人 理会 匕首 一阵 人心 人肝 切成 碎块 一声 长啸 声震 屋瓦 提起 右手 挥掌 一声 桌上 酒杯 菜盆 人头 手掌 击得 头骨 碎裂 桌子 裂开 一条 大缝 两人 正自 惊疑 那道人 喝道 无耻 鼠辈 今日 大开杀戒 杨铁心 怒极 忍耐 抄起 屋角 铁枪 门外 雪地 来来来 杨家枪 厉害 那道人 微微 冷笑 说道 公门 鼠辈 配使 杨家枪 纵身 出门 郭啸天 回家 双戟 那道人 空手 袍袖 朔风 猎猎 作响 杨铁心 喝道 拔剑 那道人 两个 鼠辈 一齐 道爷 空手 对付 杨铁心 使个 旗鼓 一招 毒龙 出洞 枪上 红缨 抖动 卷起 大枪 道人 心口 那道人 赞道 斜身 避向 左侧 左掌翻 径自 枪头 杨铁心 这杆 下过 苦功 祖传 技艺 杨家枪 非同小可 北宋 山后 杨老令公 杨六郎 已久 枪法 失传 不去 南宋 名将 杨再兴 家传 杨家枪 当年 杨再兴 一杆 铁枪 率领 三百 宋兵 小商 大战 金兵 四万 奋力 杀死 敌兵 二千余名 刺杀 万户 长撒八 千户 百户 一百余 其时 金兵 箭来 如雨 身上 每中 一枝 敌箭 随手 折断 箭杆 再战 马陷 这才 力战 殉国 金兵 焚烧 尸身 竟烧 出铁 箭头 二升 有余 这一仗 金兵 杨家枪 法威震 中原 杨铁心 不及 先祖 威勇 枪法 只见 枪尖 银光闪闪 枪缨 红光 点点 一路 枪法 杨铁心 那枪 使发 招数 灵动 变幻 巧妙 那道人 随枪 趋避 进退 刺得 半分 七十二路 杨家枪 法堪堪 杨铁心 不禁 焦躁 铁枪 回身 那道人 发足 追来 杨铁心 大喝一声 双手 抓住 枪柄 陡然间 纵臂 回身 出枪 直刺 人面 一枪 刚猛 狠疾 杨家枪 法中 临阵 破敌 屡杀 大将 一招 回马枪 当年 杨再兴 身为 大盗 降宋 岳飞 对敌 曾以 一招 刺杀 岳飞 之弟 岳翻 端的 厉害 无比 那道人 一瞬间 枪尖 已到 面门 叫声 枪法 双掌 合拢 一声 枪尖 双掌 之间 杨铁心 猛力 挺枪 往前 疾送 纹丝不动 大惊 奋起 平生 之力 往里 回夺 枪尖 一座 铁山 之中 再拉得 回来 涨红了脸 连夺 三下 枪尖 始终 脱不出 双掌 挟持 那道人 哈哈大笑 提起 右掌 快如闪电 枪身 一击 一声 杨铁心 只觉 虎口 剧痛 急忙 撒手 铁枪 落雪 那道人 杨家枪 得罪 请教 贵姓 杨铁心 惊魂未定 随口 答道 草字 铁心 道人 杨再兴 杨将军 阁下 祖上 杨铁心 曾祖 那道人 肃然起敬 抱拳 适才 误以为 两位 乃是 歹人 多有 得罪 竟是 忠良 失敬 请教 这位 高姓 郭啸天 两人 身边 说道 贱字啸天 杨铁心 义兄 梁山泊 好汉 赛仁贵 郭盛 头领 后人 那道人 贫道 可真 鲁莽 一礼 郭啸天 杨铁心 躬身 还礼 说道 道长 入内 三杯 杨铁心 拾起 铁枪 道人 正要 两位 喝个 痛快 包惜弱 李萍 挂念 杨铁心 争斗 提心吊胆 地站 门口 观看 三人释 兵言欢 心中 大慰 忙入 整治 杯盘 三人 坐定 杨二人 请教 道人 法号 道人 贫道 丘名 处机 杨铁心 一声 起身 郭啸天 一惊 莫不是 长春 丘处机 这是 道侣 相赠 贱号 贫道 愧不敢当 郭啸天 全真 大侠 长春 有幸 相见 两人 丘处机 急忙 今日 手刃 一个 奸人 官府 追得 甚紧 两位 相招 饮酒 帝王 两位 不似 寻常 乡民 疑心 郭啸天 兄弟 性子 急躁 进门 时试 道长 一手 道长 起疑 丘处机 常人 手上 哪有 劲力 两位 官府 鹰犬 乔装改扮 等候 捉拿 贫道 适才 言语 无礼 委实 鲁莽 得紧 杨铁心 不知 三人 哈哈大笑 三人 几杯酒 丘处机 指着 地下 血肉模糊 人头 说道 名叫 王道乾 汉奸 去年 皇帝 向金主 庆贺 生辰 金人 勾结 图谋 侵犯 江南 贫道 十多天 郭二人 久闻 长春 丘处机 武功 卓绝 侠义 热肠 为国 除奸 更是 敬仰 两人 讨教 功夫 丘处机 直言无隐 杨家枪 法乃 兵家 绝技 用于 战场 冲锋陷阵 所向无敌 当者 披靡 江湖 武学 高手 对敌 尚有 丘处机 内外 兼修 武功 虽未 登峰造极 已臻 甚高 境界 杨铁心 数十招 之多 却是 丘处机 出手不凡 暗暗 称奇 有意 引得 七十二路 枪法 确知 杨家 嫡传 真的 对敌 数招 之间 铁枪 震飞 这路 枪法 招数 本意 用于 步战 更求 变化 拘泥 成法 郭二人 听得 不住 点头称是 杨家枪 传子 传女 绝艺 丘处机 所知 虽博 不明 枪法 精奥 杨铁心 请教 几招 三人 酒酣耳热 言谈 投机 杨铁心 兄弟两人 得遇 道长 平生 幸事 道长 舍下 盘桓 几日 丘处机 答话 脸色 一变 说道 有人 遇上 无论如何 杨二人 点头 答应 丘处机 俯身 拾起 人头 开门 出外 身上 枝叶 之间 杨二人 举动 奇特 茫然不解 门外 朔风 虎虎 一阵 西面 传来 隐隐 马蹄 之声 杨铁心 道长 耳朵 好灵 这位 道长 武功 高得 跛子 曲三 相比 不知 一会 马蹄声 渐近 只见 风雪 十余 急奔 乘客 黑衣 黑帽 直冲 门前 当先 一人 勒马 足迹 到此为止 有人 过手 翻身 下马 察看 雪地 足迹 为首 那人 进屋 两人 下马 杨家 大门 树上 一物 一声 头顶 这一掷 劲力 奇大 那人 此物 脑浆 迸裂 众人 一阵 大哗 几个 围住 大树 一人 拾起 之物 惊叫 王大人 为首 抽出 长刀 大声 吆喝 十余 大树 团团围住 一声 口令 五个 弯弓 搭箭 五枝 羽箭 齐向 丘处机 射去 杨铁心 提起 铁枪 出屋 助战 郭啸天 一把 低声 道长 别出去 寡不敌众 出手 声甫 只见 树上 一枝 羽箭 飞将 却是 丘处机 闪开 四箭 接住 一箭 甩手 手法 投掷 一声 一名 黑衣人 中箭落马 滚入 草丛 丘处机 拔剑 跃下 剑光 起处 两名 黑衣人 已然 中剑 为首 黑衣人 刷刷 三枝 短弩 随手 打出 挥动 长刀 勒马 丘处机 剑光 连闪 两人 中剑 落马 杨铁心 张大 口合 不拢 心想 十年 武艺 这位 道爷 出剑 快法 抵挡 没能 手下 容情 早就 性命 丘处机 如风 骑马 使刀 那人 相斗 那使 一柄 遮架 甚为 威猛 下属 纷纷 上前 助战 再斗 一阵 郭杨 两人 丘处机 军官 缠斗 空儿 或出 掌击 杀伤 一人 用意 似要 尽数 歼灭 生怕 余党 一哄而散 不易 追杀 过半 顿饭 时间 剩下 六七名 那使 唿哨 拨转 马头 丘处机 左掌 前探 拉住 马尾 手上 使劲 身子 倏地 跃上 马背 一剑 后心 插进 前胸 丘处机 抛下 敌尸 控马 四下 兜截 赶杀 铁蹄 翻飞 剑光 闪烁 惊呼 叫声 一个个 尸首 倒下 鲜血 白雪皑皑 大地 片片 染红 丘处机 提剑 四顾 唯见 一匹 匹空马 四散 狂奔 一名 敌人 剩下 哈哈大笑 杨二人 招手 杀得 痛快 杨二人 开门 神色 惊魂未定 郭啸天 道长 丘处机 身上 郭啸天 持刀 身上 掏出 一件 公文 抽出 却是 那装 狗叫 临安 府尹 所发 密令 内称 金国使者 临安 坐索 杀害 王道乾 凶手 捕快 会同 大金国 人员 克日 凶手 归案 郭啸天 正看 愤怒 杨铁心 手里 几块 尸身 腰牌 刻着 金国 文字 这批 黑衣人 好几 竟是 金兵 郭啸天 敌兵 境内 任意 逮人 杀人 我大宋 官府 竟要 使者 号令 世界 杨铁心 宋皇帝 向金国 称臣 文武百官 金人 奴才 丘处机 地道 出家人 本来 滥杀 一见 害民 奸贼 敌国 仇寇 贫道 手下留情 杨二人 齐声 杀得 杀得 小村 居民 本少 天寒 大雪 无人 外出 有人 瞧见 打斗 回家 闭户 不出 敢过来 察看 询问 杨铁心 取出 锄头 铁锹 三人 十余具 尸首 埋入 江边 土中 丘处机 包惜弱 右手 手腕 脉搏 大声 恭喜 恭喜 杨铁心 愕然 问道 包惜弱 一声 三个 男人 周身 不禁 害羞 李萍 进屋 斟茶 丘处机 微笑 尊夫人 有喜 杨铁心 喜道 丘处机 贫道 平生 所学 稍足 自慰 三件 第一 医道 炼丹 药石 所知 第二 几首 歪诗 第三 几手 章法 武艺 郭啸天 道长 惊人 武功 仍算 章法 兄弟俩 只好 小孩儿 竹棒 三人 扫雪 灭迹 扫雪 完毕 后入 重整 杯盘 丘处机 今日 大畅 心怀 意兴 甚豪 杨铁心 想到 妻子 身孕 笑吟吟 地合 不拢 口来 心想 这位 道长 文武双全 说道 大嫂 孩子 道长 两个 名字 丘处机 微一 沉吟 说道 郭大哥 孩子 郭靖 二哥 孩子 叫作 杨康 男女 可用 两个 名字 郭啸天 道长 靖康 之耻 记得 二帝 之辱 丘处机 伸手 入怀 摸出 短剑 放在 桌上 长短 形状 完全相同 绿皮 金吞口 乌木 剑柄 杨铁心 匕首 匕尖 一把 短剑 剑柄 上刻 郭靖 两字 一把 短剑 上刻 杨康 两字 杨二人 匕如飞 常人 写字 明白 丘处机 已刻 客中 没带 东西 短剑 留给 两个 出世 孩子 郭杨 两人谢 接过 抽剑 出鞘 只觉 冷气 森森 剑刃 锋利 之极 丘处机 短剑 无意之中 得来 锋锐 但剑刃 贫道 不合 将来 孩子 可用 杀敌 防身 十年 贫道 如尚 苟活 人世 必当 传授 孩子 几手 功夫 杨二人 大喜 称谢 丘处机 金人 强据 北方 百姓 暴虐 残杀 民心 不附 势必 两位 好自为之 举杯 饮尽 开门 走出 杨二人 待要 相留 迈步 如飞 雪地 郭啸天 高人 侠士 飘忽 今日 有幸 会见 讨教 却是 无缘 杨铁心 大哥 道长 今日 杀得 痛快 闷气 短剑 拔出 摩挲 剑刃 忽道 大哥 主意 成不成 郭啸天 杨铁心 孩子 男儿 结为 兄弟 女儿 结为 姊妹 郭啸天 一男一女 结为 夫妻 两人 伸手 相握 哈哈大笑 李萍 包惜弱 内堂 事乐成 样子 杨铁心 两位 夫人 心中 乐意 不住 叫好 杨铁心 短剑 掉换 文定 之礼 兄弟 姊妹 换回来 夫妻 郭啸天 对不起 两柄 哥哥 家里 包惜弱 说不定 兄弟 家里 杨二人 换过 短剑 交由 李萍 包惜弱 郭氏 夫妇 告别 回家 其时 指腹为婚 事属 寻常 两个 孩子 娘胎 父母 已代 定下 终身大事 血迹 直通 屋后 林中 雪地 上留 有人 爬动 痕迹 包惜弱 愈加 起疑 跟着 血迹 走进 松林 一座 只见 地下 黑黝黝 一团 物事 包惜弱 走近 看时 赫然 尸首 身穿 黑衣 便是 捉拿 丘处机 人众 受伤 未死 正待 回去 叫醒 丈夫 掩埋 转念 鬼使神差 有人 撞见 鼓起勇气 尸首 想拉入 草丛 之中 藏起 丈夫 伸手 一拉 尸首 扭动 跟着 呻吟 包惜弱 这一下 魂飞天外 只道 僵尸 作怪 转身 双脚 地上 再也 动弹不得 半晌 尸首 扫帚 轻轻 碰触 尸首 呻吟 声音 甚为 微弱 此人 未死 定睛 看时 背后 肩头 一枝 狼牙 利箭 肉里 箭枝 上染满 血污 天空 雪花 兀自 飘下 全身 已罩 薄薄 一层 白雪 只须 半夜 冻死 自幼 心地 仁慈 见到 受了伤 麻雀 田鸡 虫豸 蚂蚁 带回家 妥为 喂养 伤愈 再放回 田野 医治 不好 整天 性情 不改 屋子里 养满 诸般 小禽 小兽 父亲 屡试不第 学究 按着 性子 取个 名字 叫作 惜弱 红梅 包家 公鸡 老母鸡 特多 包惜弱 饲养 鸡雏 不肯 宰杀 一只 父母 家里 小鸡 享天 寿终正寝 杨家 杨铁心 这位 如花似玉 妻子 甚为 怜爱 事事 性子 杨家 后院 自然 小鸟 小兽 天下 杨家 小鸡 小鸭 慢慢 大鸡大 未久 家中 尚未 老鸡 老鸭 大势所趋 日后 这人 奄奄一息 地伏 雪地 之中 慈心 登起 明知 此人 好人 眼睁睁 地见 痛死 冻死 无论如何 不忍 微一 沉吟 急奔 回屋 叫醒 丈夫 商量 无奈 杨铁心 大醉 沉睡 推他 包惜弱 心想 丈夫 止血 金创药 小刀 碎布 半壶 热酒 那人 不动 包惜弱 半壶 热酒 慢慢 灌入 嘴里 自幼 医治 小鸟 小兽 医伤 有点儿 门道 一箭射 甚深 胡乱 拔出 喷血 毙命 拔出 咬紧牙关 锋利 小刀 割开 肌肉 箭杆 奋力 提出 惨叫 一声 创口 鲜血 直喷 只射 包惜弱 胸前 衣襟 全是 血点 那枝箭 终于 拔出 包惜弱 心中 突突 止血 创口 布条 紧紧 扎住 一阵 悠悠 疲弱 无力 出声 包惜弱 得手 酸足 实在 扶不动 这大 男人 灵机一动 回家 门板 人拉到 雪地 拖动 门板 雪车 回家 放入 柴房 半日 心神 方定 换下 污衣 洗净 手脸 瓦罐 中倒 一碗 适才 喝完 鸡汤 一手 烛台 柴房 汉子 呼吸 细微 并未 断气 包惜弱 心中 甚慰 鸡汤 那人 半碗 剧烈 咳嗽 包惜弱 一惊 烛台 烛光 下见 这人 眉清目秀 鼻梁 高耸 竟是 相貌 俊美 青年 男子 脸上 一热 左手 微颤 晃动 烛台 几滴 烛油滴 脸上 睁开眼 蓦见 一张 芙蓉 秀脸 双颊 晕红 星眼 如波 眼光 怜惜 羞涩 光景 宛在 不禁 看得 包惜弱 低声 好些 伸手 要接 手上 无力 险些 全倒 身上 包惜弱 抢住 汤碗 救人 要紧 只得 调羹 一口 一口 那人 鸡汤 眼中 渐渐 现出 光彩 凝望 显是 不胜感激 包惜弱 不好意思 几捆 稻草 持烛 回房 这一晚 再也 安稳 几个 噩梦 忽见 丈夫 挺枪 柴房中 那人 提刀 丈夫 追逐 四面 深渊 无处 逃避 几次 从梦中 惊醒 身上 冷汗 天明 起身 丈夫 早已 只见 铁枪 磨刀石 磨砺 枪头 包惜弱 想起 夜来 梦境 心惊胆战 柴房 推开 门来 一惊 剩乱 一堆 那人 不知去向 后院 只见 后门 虚掩 雪地 赫然 一行 有人 连滚带爬 向西 痕迹 痕迹 不觉 怔怔 地出 良久 一阵 寒风 扑面 忽觉 腰酸 骨软 困倦 回到 前堂 杨铁心 已烧 白粥 放在 桌上 不错 包惜弱 丈夫 怀孕 特加 体惜 一笑 端起 昨晚 告知 丈夫 嫉恶如仇 定会 赶去 救人 绝口不提 这日 午后 杨铁心 妻子 闲谈 说起 卖酒 出了门 留下 小女儿 孤苦 可怜 照顾 包惜弱 心下 不忍 糕饼 前去 探视 好几个 时辰 说道 女孩 没饭 身孕 无力 照顾 带到 红梅 娘家 母亲 照看 几天 等曲 回家 送回 杨铁心 曲三 英雄 能助 一臂之力 这日 杨氏 夫妇 晚饭 包惜弱 丈夫 缝套 衫裤 杨铁心 打好 两双 草鞋 草鞋 挂到 墙上 日间 耕田 犁头 包惜弱 犁头 损啦 明儿 东村 张木儿 一斤 半铁 一打 包惜弱 杨铁心 妻子 说道 衣衫 身子 孩子 好好儿 歇歇 衣裳 包惜弱 转过 头来 一笑 不停 杨铁心 轻轻 针线 包惜弱 这才 懒腰 熄灯 上床 午夜 包惜弱 朦胧 忽觉 丈夫 起身 一惊 远处 隐隐 马蹄 之声 声音 是从 西面 过得 一阵 东边 传来 马蹄声 北面 南面 蹄声 包惜弱 起身 四面 马来 杨铁心 穿衣 片刻之间 四面 蹄声 越来越近 村中犬儿 吠叫 杨铁心 围住 包惜弱 惊道 干什么 杨铁心 妻子 丘处机 所赠 短剑 放在 怀里 防身 墙上 摘下 一杆 铁枪 握住 东南西北 人声 马嘶 已乱成 杨铁心 推开 窗子 外望 只见 大队 兵马 村子 团团围住 兵丁 手里 高举 火把 七八名 武将 往来 奔驰 兵丁 齐声 叫喊 捉拿 反贼 莫让 反贼 杨铁心 寻思 捉拿 曲三 曲三 已有 几个 村里 幸好 武功 再强 敌不过 兵马 一名 武将 高声 郭啸天 杨铁心 两名 反贼 快快 受缚 纳命 杨铁心 大吃一惊 包惜弱 脸色苍白 杨铁心 低声 官家 不知 何事 诬害 良民 官府 只好 逃命 你别 这杆 定能 冲出重围 一身 武艺 江湖 闯荡 临危 壁上 摘下 长弓 斜负 背上 腰间 箭袋 握住 妻子 右手 包惜弱 我来 收拾 东西 杨铁心 收拾 统通 包惜弱 心中 一酸 垂下 泪来 声道 这家 杨铁心 性命 重整家园 包惜弱 小鸡 小猫 杨铁心 孩子 还顾 一顿 安慰 官兵 怎会 小鸡 小猫儿 为难 包惜弱 言方 窗外 火光 闪耀 众兵 点燃 两间 草房 两名 兵丁 高举 火把 杨家 屋檐 口中 大叫 郭啸天 杨铁心 两个 反贼 牛家村 烧成 白地 杨铁心 怒气 填膺 开门 走出 大声 喝道 杨铁心 干什么 两名 兵丁 吓了一跳 丢下 火把 转身 火光 一名 武官 拍马 走近 杨铁心 官去 拿下 四五名 兵丁 两旁 拥上 杨铁心 倒转 枪来 一招 白虹 经天 三名 兵丁 扫倒 一招 春雷 震怒 枪柄 挑起 一兵 人堆 喝道 先得 武官 大胆 反贼 竟敢 拒捕 口中 叫骂 畏惧 武勇 逼近 身后 另一名 武官 好好 老爷 过堂 免得 加重 罪名 公文 杨铁心 拿来 武官 一名 郭犯 郭啸天 窗口 半身 弯弓 搭箭 喝道 郭啸天 箭头 对准 武官 心头 发毛 只觉 背脊 一阵阵 凉气 放下 我读 公文 郭啸天 厉声 快读 武官 无奈 公文 大声 读道 临安 牛家村 村民 郭啸天 杨铁心 二犯 勾结 巨寇 图谋不轨 严审 法办 郭啸天 衙门 公文 武官 临安 府尹 大人 手谕 杨二人 一惊 厉害 丘道长 杀死 官差 事发 郭啸天 首告 凭据 武官 只管 到府 堂上 分辩 杨铁心 临安 专害 无辜 好人 可不 弯弓 搭箭 箭尖 对准 武官 领队 武官 抗命 拒捕 罪加一等 杨铁心 转头 妻子 穿件 衣服 我夺 先射 将官 兵卒 自然 松手 放弦 声响 箭发 流星 正中 武官 胸膛 武官 一声 下马 兵丁 齐声 发喊 另一名 武官 反贼 兵丁 纷纷 杨二人 连珠 转瞬间 射倒 六七名 兵丁 官兵 势众 武官 督率 下冲 两家 门前 杨铁心 大喝一声 冲出 铁枪 起处 官兵 惊呼 倒退 纵到 一个 白马 武官 身旁 枪刺 武官 举枪 挡架 杨家枪 变化 灵动 杨铁心 枪杆 下沉 武官 举枪 挑起 武官 一个 筋斗 下马 杨铁心 枪杆 地下 一撑 飞身 跃上 马背 双腿 那马 一声 长嘶 火光 中向 屋门 杨铁心 枪刺 门边 一名 兵丁 俯身 伸臂 包惜弱 抱上 马背 高声 大哥 跟着 我来 郭啸天 舞动 双戟 保护 妻子 李萍 从人 丛中 冲杀 官兵 二人 势凶 拦阻 不住 纷纷 放箭 杨铁心 纵马 李萍 身旁 大嫂 上马 一跃 下马 李萍 急道 使不得 杨铁心 一把 马背 兄弟两人 马后 战且 落荒而逃 不多时 喊声 大作 一彪 军马 冲杀 杨二人 暗暗 叫苦 待要 觅路 奔逃 羽箭 嗖嗖 包惜弱 一声 坐骑 中箭 马背上 两个 女子 下马 杨铁心 大哥 你护 提枪 往人 丛中 冲杀 十余名 官兵 排成一列 手挺 长矛 对准 杨铁心 齐声 呐喊 郭啸天 眼见 官兵 势大 心想 兄弟二人 逃命 不难 妻子 无论如何 救不出 犯法 白自在 送命 临安 分辩 上次 丘处机 道长 官兵 和金兵 放走 一个 死无对证 官府 官差 金兵 兄弟 纵声 兄弟 别杀 杨铁心 一呆 拖枪 回来 带队 军官 下令 停箭 兵士 四下 围住 兵器 弓箭 不死 杨铁心 大哥 别中 奸计 郭啸天 摇摇头 双戟 地下 杨铁心 爱妻 花容 失色 心下 不忍 口气 铁枪 弓箭 地下 杨二人 兵器 刚一离 十余枝 长矛 矛头 刺到 四人 身旁 八名 士兵 两个 服侍 一个 四人 缚住 杨铁心 冷笑 昂头 不理 带队 军官 举起 马鞭 一鞭 杨铁心 脸上 大胆 反贼 不怕死 这一鞭 自额 长长 一条 血痕 杨铁心 怒道 名字 军官 怒气 更炽 鞭子 如雨 老爷 行不改姓 改名 姓段 天德 上天 好生之德 天德 记住 阎王 老子 告状 杨铁心 退避 双眼 凝视着 段天德 喝道 老爷 额头 刀疤 脸上 青记 记住 一鞭 包惜弱 丈夫 受苦 哭叫 好人 坏事 干吗 打人 不讲道理 杨铁心 一口 唾沫 一声 正吐 段天德 脸上 段天德 大怒 拔出 腰刀 先毙 反贼 举刀 杨铁心 闪过 身旁 两名 士兵 长矛 抵住 两胁 段天德 一刀 杨铁心 无处 可避 只得 急缩 段天德 几分 武功 一刀 随即 向前 一送 锯齿 这一下 杨铁心 肩上 一道 口子 第二刀 郭啸天 义弟 性命 危殆 纵起 飞脚往 段天德 面门 段天德 一惊 收刀 招架 郭啸天 双手 遭缚 功夫 身子 未落 左足 收转 右足 飞出 段天德 腰里 段天德 剧痛 之下 怒不可遏 乱枪 上头 吩咐 反贼 拒捕 格杀勿论 众兵举 矛齐 郭啸天 接连 踢倒 两兵 双手 遭缚 不灵 身子 长矛 段天德 赶上 手起刀落 一只 右膀 杨铁心 自力 双手 急切 脱缚 突见 义兄 重伤 倒地 心中 急痛 之下 身上 生出 一股 巨力 大喝一声 绳索 绷断 挥拳 打倒 一名 兵士 抢过 一柄 长矛 展开 杨家枪 这时候 一夫 拚命 万夫莫当 长矛 起处 登时 两名 官兵 段天德 势头 不好 先自 退开 杨铁心 豁出去 东挑西 数兵 官兵 凶猛 心下 一声 四下 逃散 杨铁心 追赶 起义 断臂 血流 泉涌 全身 已成 血人 不禁 垂下 泪来 郭啸天 咬紧牙关 兄弟 杨铁心 拚死 郭啸天 杨铁心 衣服 裹伤 段天德 一刀 肩带 胸地 创口 半个 身子 竟是 包扎 郭啸天 悠悠 醒来 兄弟 弟妇 嫂子 气绝 杨铁心 情逾骨肉 惨死 满腔悲愤 脑海中 一闪 想到 两人 结义 那句 誓言 同年 同月同日 抬头 四望 妻子 大嫂 混乱 不知去向 大声 大哥 报仇 矛向 官兵 队里 官兵 列成 队伍 段天德 号令 飞蝗 般射来 杨铁心 不在意 拨箭 疾冲 一名 武官 手挥 大刀 杨铁心 身子 一矮 钻到 马腹 之下 武官 一刀 砍空 正待 回马 后心 长矛 刺进 杨铁心 尸首 跳上 马背 舞动 长矛 官兵 敢接 四下 奔逃 一阵 只见 一名 武官 一个 女子 疾驰 杨铁心 飞身 下马 横矛杆 打倒 一名 兵士 手中 弓箭 火光 看准 武官 坐骑 一箭射 正中 马腿 两人 杨铁心 一箭 射死 武官 只见 女子 地下 挣扎 起身 妻子 包惜弱 乍见 丈夫 又惊又喜 怀里 杨铁心 问道 大嫂 包惜弱 官兵 杨铁心 包惜弱 惊道 官兵 追来 杨铁心 回过头来 果见 一队 官兵 手举 火把 赶来 杨铁心 咬牙 大哥 已死 无论如何 大嫂 保全 郭家 骨血 可怜见 将来 相见 包惜弱 紧紧 搂住 丈夫 脖子 放手 哭道 永远 分离 要死 一块 杨铁心 心中 一酸 抱住 妻子 硬起 心肠 拉脱 双手 挺矛 往前 急追 数十步 回头 一望 只见 妻子 尘埃 之中 官兵 赶到 身旁 杨铁心 袖子 一抹 脸上 泪水 汗水 血水 生死 置之度外 身当 以救义 为先 一阵 夺到 一匹 抓住 一名 官兵 喝问 得知 李氏 纵马 疾驰 道旁 树林 一个 女人 声音 大叫 大嚷 急忙 马头 冲入 林中 只见 李氏 双手 已自脱 两名 兵士 厮打 农家 女子 身子 壮健 武艺 拼命 自有 一股 刚勇 两名 兵士 奈何 杨铁心 打话 冲上去 一矛 一个 两兵 李氏 扶上 坐骑 两人同 回马 找寻 妻子 奔到 包氏 分手 无人 天色 微明 下马 察看 只见 地下 马蹄 杂沓 尚有 人身 拖曳 痕迹 妻子 官兵 杨铁心 跃上 双足 马腹 那马 受痛 腾身 飞驰 赶得 正急间 道旁 号角 声响 冲出 十余名 黑衣 武士 当先 一人 举起 狼牙棒 头顶 杨铁心 举矛格开 一矛 那人 回棒 横扫 棒法 奇特 似非 中原 武术 所使 家数 杨铁心 郭啸天 谈论 武艺 当年 梁山泊 好汉 中有 一位 霹雳火 秦明 狼牙棒 天下无双 之外 武林 豪杰 兵刃 向来 极少 狼牙棒 份量 沉重 膂力 不易 运用自如 金兵 将官 喜用 以金人 生长 辽东 苦寒 之地 强力 兵器 沉重 占便宜 当年 金兵 入寇 狼牙棒 砸击 宋军民 百姓 气愤 说起 笑话 某甲道 金兵 可怕 一物 自有 抵挡 乙道 金兵 有金 韩少保 乙道 金兵 拐子 麻札刀 乙道 金兵 狼牙棒 天灵盖 天灵盖 头顶 脑门 金兵 狼牙棒 大宋 百姓 只好 天灵盖 抵挡 之中 实含 无限 悲愤 杨铁心 狼牙棒 数合 想起 郭啸天 谈论 越来越 疑心 这人 棒法 招术 明明 金兵 将官 怎地 现身 斗数合 枪招 加快 挺矛 刺于 马下 余众 大惊 发喊 逃散 杨铁心 转头 身后 李氏 之中 有无 受伤 树丛 中射出 一枝 冷箭 杨铁心 不及 闪避 一箭直 透后 李氏 大惊 叔叔 杨铁心 心中 今日 先得 贼兵 杀散 大嫂 逃生 摇矛 狂呼 往人 多处 直冲 背上 剧痛 眼前 漆黑 昏晕 马背 之上 包惜弱 吞声饮泣 心中 挂念 丈夫 不知 性命 天色 已明 路上 渐有 行人 百姓 见到 官兵 队伍 远远 躲开 包惜弱 担心 官兵 无礼 哪知众 武官 言语 举止 之间 颇为 客气 这才 稍稍 放心 数里 喊声 大振 十余名 黑衣人 手执 兵刃 道旁 冲杀 当先 一人 喝道 无耻 官兵 残害 良民 通统 下马 纳命 带队 武官 大怒 喝道 何方 大胆 匪徒 京畿 之地 作乱 快快 滚开 一众 黑衣人 打话 冲入 官兵 队里 混战 官兵 人多 黑衣人 个个 武艺 精熟 一时之间 杀得 不分胜负 包惜弱 暗暗 欢喜 心想 莫不是 铁哥 朋友 讯息 前来 相救 混战 中一箭 飞来 正中 包惜弱 坐骑 那马 负痛 纵蹄向北 疾驰 包惜弱 大惊 双臂 搂住 马颈 下马 蹄声 急促 骑马 转眼间 一匹 黑马 身旁 掠过 乘客 手持 长索 空中 几圈 一声 长索 飞出 索上 圈套 包惜弱 坐骑 骑马 而驰 渐渐 收短 绳索 骑马 奔跑 缓慢 数十步 呼哨 一声 黑马 收脚 站住 包惜弱 坐骑 黑马 一带 向前 一声 长嘶 前足 提起 人立 包惜弱 劳顿 大半夜 惊恐 伤心 再也 不住 双手 一松 下马 昏睡 不知 悠悠 只觉 柔软 床上 身上 似盖 棉被 甚觉 温暖 睁开眼睛 入眼 青花 布帐 果是 床上 侧头望 见床 桌上 点着 油灯 似有 黑衣 男子 坐在 床沿 那人 翻身 起身 轻轻 揭开 帐子 低声 问道 睡醒 包惜弱 神智 尚未 全复 只觉 这人 依稀 似曾相识 伸手 额头 一摸 轻声道 烧得 烫手 医生 快来 包惜弱 迷迷糊糊 地重 入睡 一会 似觉 医生 把脉 诊视 有人 喝药 昏睡 梦中 惊醒 大叫 铁哥 铁哥 随觉 有人 轻拍 肩膀 低语 抚慰 醒来时 白天 忍不住 呻吟 一个 走近 前来 揭开 帐子 包惜弱 分明 不觉 一惊 面目 清秀 嘴角 含笑 几个 雪地 垂死 青年 包惜弱 这是 地方 当家的 青年 摇摇手 示意 低声 外边 官兵 追捕 现下 借住 一家 乡农 家里 小人 斗胆 谎称 娘子 丈夫 娘子 别露 形迹 包惜弱 脸一红 点头 当家的 那人道 娘子 身子 虚弱 大好 小人 慢慢 告知 包惜弱 大惊 语气 丈夫 不测 双手 紧紧抓住 被角 声道 那人 娘子 心急 无益 身子 要紧 包惜弱 满脸 无可奈何 之状 点头 杨爷 不幸 官兵 害死 摇头叹息 包惜弱 伤痛 攻心 良久 放声大哭 细声 安慰 包惜弱 抽抽噎噎 地道 去世 那人道 杨爷 二十 年纪 身长 膀阔 手使 一柄 长矛 包惜弱 那人道 昨日 见到 官兵 相斗 好几个 可惜 可惜 一名 武官 偷偷 绕到 身后 枪刺 包惜弱 夫妻情 一日 水米 不进 决意 绝食 殉夫 那人 相强 整日 斯斯文文 说话 解闷 包惜弱 过意不去 问道 相公 高姓大名 打救 那人道 小人 姓颜 名烈 昨天 几个 朋友 官兵 逞凶 害人 小人 路见不平 出手 相救 老天爷 有眼 所救 竟是 恩人 天缘 巧合 包惜弱 听到 天缘 巧合 四字 脸上 一红 转身 向里 理他 心下 琢磨 疑窦 转身 说道 官兵 本来 一路 颜烈 包惜弱 那日 官兵 捉拿 那位 道长 这才 受伤 颜烈 那日 冤枉 小人 北边 临安 路过 贵村 无端 一箭射来 娘子 大恩 相救 真死 不明不白 道士 道士 官兵 道士 一塌糊涂 笑了起来 包惜弱 路过 一伙 道长 那天 不想 述说 官兵 前来 捉拿 丘处机 杀散 官兵 包惜弱 一会 怔怔 脸上 神色 痴痴 迷迷 心神 不属 住口 颜烈 陪笑 对不住 怎生 逃出去 可别 官兵 包惜弱 哭道 丈夫 过世 活着 干什么 一个 颜烈 正色 娘子 官人 贼兵 所害 含冤莫白 设法 报仇 一意 寻死 官人 生前 英雄豪杰 之士 九泉之下 瞑目 包惜弱 一个 弱女子 怎有 报仇 能耐 颜烈 义愤 于色 娘子 要报 杀夫 之仇 这件 着落 小人 身上 仇人 包惜弱 说道 统率 官兵 将官 名叫 段天德 额头 有个 刀疤 脸上 有块 青记 颜烈 既有 姓名 记认 逃到 天涯海角 非报 此仇 出房 一碗 稀粥 剥开 咸蛋 说道 爱惜 身子 报仇 包惜弱 心想 有理 接过 慢慢 悲痛 之中 迷迷糊糊 次日 早晨 包惜弱 整衣 对镜 找到 白布 白花 鬓边 丈夫 带孝 红颜 如花 夫妻 殊途 悲从中来 痛哭 颜烈 外面 哭声 稍停 柔声道 外面 官兵 包惜弱 出屋 颜烈 一锭 银子 屋主 两匹马 包惜弱 本来 一箭 颜烈 裹好 包惜弱 颜烈 使个 眼色 人前 多问 上马 两人 并辔 向北 走出 十余里 包惜弱 颜烈 找个 隐僻 避一避 风头 官家 追拿得 小人 找寻 官人 尸首 好好 安葬 找到 段天德 奸贼 官人 报仇 包惜弱 性格 柔和 本少 主意 大难 孤苦无依 周到 心中 好生 感激 颜相公 怎生 报答 颜烈 凛然 性命 娘子 所救 小人 一生 娘子 驱使 粉身碎骨 赴汤蹈火 包惜弱 那大 坏人 段天德 铁哥 大仇 地下 想到 垂下 泪来 人行 一日 晚上 长安 镇上 投店 歇宿 颜烈 自称 夫妇 二人 一间 包惜弱 心中 惴惴不安 吃晚饭 一声 抚摸 丘处机 所赠 短剑 心中 打定 主意 无礼 自杀 颜烈命 店伴 两捆 稻草 入房 店伴 房门 稻草 地下 稻草 之中 身上 一张 毡毯 包惜弱 娘子 请安 闭上 包惜弱 怦怦 想起 故世 丈夫 柔肠寸断 大半个 时辰 长叹 口气 熄灭 烛火 手中 紧握 短剑 床上 次日 包惜弱 起身 颜烈 收拾 马具 店伴 安排 早点 包惜弱 暗暗 感激 至诚 君子 防范 之心 登时 消了 大半 待用 早点 一碟 干丝 一碟 火腿 一碟 腊肠 一碟 熏鱼 另有 一小 清香 扑鼻 米粥 生于 清贫 自归 杨门 务农 为生 平日 早饭 几根 咸菜 半块 乳腐 过年 过节 喜庆宴会 之外 考究 饮食 食用 颇感 不安 店伴 送来 一个 包裹 颜烈 走出 房去 包惜弱 问道 这是 店伴 相公 今日 一早 买来 娘子 替换 衣服 相公 娘子 放下 包裹 走出 房去 包惜弱 打开 包裹 看时 不觉 一套 全身 缟素 衣裙 白鞋 袜固 一应俱全 内衣 小袄 罗帕 汗巾 齐备 心道 难为 一个 年轻 男子 怎想 周到 换上 内衣 想到 颜烈 所买 满脸 红晕 半夜 仓促 离家 衣衫 本已 不整 一夜 纠缠 奔逃 满身 破损 尘污 换上 衣衫 里外 一新 精神 不觉 稍振 颜烈 回房 身上 光鲜 焕然 两人 一前一后 并辔 而行 江南春 道旁 垂柳 拂肩 花气 醉人 田中 禾苗 新绿 颜烈 宽怀 减愁 东谈西 包惜弱 父亲 小镇 学究 常识 丈夫 和义兄 郭啸天 粗豪 汉子 一生 之中 吐属 俊雅 才识 博洽 男子 但觉 言一语 无不 含意 隽妙 心中 暗暗 称奇 眼见 一路 临安 越来越 绝口不提 为己 报仇 安葬 丈夫 忍不住 颜相公 夫君 尸身 不知 颜烈 非是 小人 不肯 寻访 尊夫 尸首 安葬 前日 娘子 时杀 官兵 眼下 风急 火旺 当口 临安 左近 现身 非遭 官兵 毒手 眼下 官府 娘子 说道 尊夫 杀官 造反 罪大恶极 拿到 家属 斩首 充作 官妓 小人 死不足惜 娘子 无人 保护 官兵 遭遇 极惨 人身 黄泉之下 伤心 含恨 包惜弱 诚恳 点头 颜烈 仔细 想过 眼下 要紧 尊夫 收尸 安葬 嘉兴 取出 银子 托人 临安 妥为 办理 娘子 定要 放心 嘉兴 安顿 娘子 小人 冒险 前往 包惜弱 心想 甘冒 于理 不合 说道 相公 如能 找到 妥当 可靠 丈夫 有个 义兄 遭难 敢烦 相公 一并 安葬 垂下 泪来 颜烈 此事 娘子 放心 便是 报仇 段天德 贼子 朝廷 武将 着实 不易 此刻 防备 得紧 慢慢 等候 机会 包惜弱 只想 仇人 自杀 殉夫 颜烈 这番话 句句 实情 不知 何年何 心下 一急 出声 抽抽噎噎 地道 想要 当家的 英雄 被害 一个 弱女子 能耐 一死 殉夫 便是 颜烈 沉吟 半晌 为难 终于 说道 娘子 信得过 包惜弱 点头 颜烈 眼下 前去 北方 躲避 官兵 追捕 大宋 官兵 北边 淮河 没多大 凶险 事情 冷下来 南下 报仇雪恨 娘子 放心 宽怀 官人 血海 沉冤 自有 小人 一力 承担 包惜弱 大为 踌躇 家破人亡 举目无亲 跟随 孤身 一个 弱女子 安身立命 那晚 亲眼见到 官兵 杀人放火 凶狠 模样 落入 手中 充作 官妓 那真 求生 求死 此人 非亲非故 守节 寡妇 一个 青年 男子 同行 此刻 举刃 自刎 此人 阻拦 只觉 去路 茫茫 来日大难 思前想后 柔肠百转 悲伤 哭泣 眼泪 流干 颜烈 娘子 如觉 小人 筹划 不妥 吩咐 小人 无有 包惜弱 迁就 心中 反觉 过意不去 一了百了 实在 他法 无可奈何 之下 只得 低头 瞧着办 颜烈 大喜 说道 娘子 活命 大德 小人 终身 忘记 娘子 包惜弱 颜烈 当晚 两人 乌墩 一家 客店 中宿 同处 一室 包惜弱 答允 北方 颜烈 言谈举止 先前 拘谨 时时 流露出 喜不自胜 之情 包惜弱 隐隐 不妥 丝毫 越礼 心想 感恩图报 料来 不致 有何 异心 次日 中午 两人 嘉兴府 浙西 大城 丝米 集散 之地 自来 繁盛 古称 秀州 五代 石晋 改名 嘉禾 南宋 孝宗 诞生 即位 改名 嘉兴 意谓 龙兴 地近 京师 临安 市肆 兴旺 颜烈 一家 客店 歇歇 包惜弱 害怕 官兵 天色 尚早 赶道 颜烈 店铺 不错 娘子 衣服 几套 替换 包惜弱 一呆 昨天 颜烈 衣服 一两天 光鲜 娘子 容色 岂可 世上 顶上 衣衫 包惜弱 夸奖 容貌 内心 窃喜 低头 热丧 之中 颜烈 小人 理会 包惜弱 言语 容貌 秀丽 丈夫 杨铁心 当面 赞过 低下头 偷眼 颜烈 轻薄 神色 心中 栗六 不知 颜烈 途人 径去 秀水 客栈 投店 漱洗 颜烈 包惜弱 点心 两人 坐在 房中 包惜弱 想要 一间 客房 不知 启齿 脸上 一阵 一阵 心事重重 一会 颜烈 娘子 小人 物品 包惜弱 点头 相公 可别 太多 花费 颜烈 微笑 可惜 娘子 服丧 戴用 珠宝 多花钱'
from sklearn.feature_extraction.text import CountVectorizer
countvec = CountVectorizer(min_df = 5) # 在5个以上章节中出现的才保留
res = countvec.fit_transform(rawchap)
res
<5x250 sparse matrix of type ''
with 1250 stored elements in Compressed Sparse Row format>
res.todense()#转换为标准格式的d2m矩阵
matrix([[30, 7, 3, ..., 2, 2, 4],
[39, 8, 1, ..., 1, 3, 4],
[30, 10, 4, ..., 3, 1, 16],
[45, 1, 6, ..., 1, 3, 4],
[31, 5, 5, ..., 1, 1, 3]], dtype=int64)
countvec.get_feature_names()
['一个',
'一人',
'一件',
'一匹',
'一口',
'一只',
...
'飞来',
'马背',
'高举',
'鲜血',
'齐声']
尝试编制以下程序:
以段为单位依次读入射雕第一章的内容。
为每一段分别生成bow稀疏向量。
生成稀疏向量的同时动态更新字典。
请自行编制bow稀疏向量和标准长向量互相转换的程序。
请自行思考基于BOW的分析模型和基于分布式表示向量的模型在文本挖掘中的适用范围和优缺点。
在文档词条矩阵中可以看到许多类似“黄蓉道”、“黄蓉说”之类的词条,请思考对此有哪些处理办法。
import jieba
raw_1=raw[raw.chap == 1]
raw_1=raw_1.iloc[3:4].txt
raw_1
res_1 = ' '.join(jieba.cut(str(raw_1)))
res_1
'那 说话 人 五十 来 岁 年纪 , 一件 青布 长袍 早洗 得 褪成 了 蓝灰 带白 。 只 听 他 两片 梨花 木板 碰 了 几下 , 左手 ... \n Name : txt , dtype : object'
raw1=raw[raw.chap == 1]
raw1.txt[36]
res_1 =[ ' '.join(jieba.cut(raw1.txt[36]))]
res_1
[' 那 说话 人 五十 来 岁 年纪 , 一件 青布 长袍 早洗 得 褪成 了 蓝灰 带白 。 只 听 他 两片 梨花 木板 碰 了 几下 , 左手 中 竹棒 在 一面 小 羯鼓 上 敲起 得 得 连声 。 唱道 : “ 小桃 无主自 开花 , 烟草 茫茫 带 晚鸦 。']
TF-IDF的具体实现
jieba, NLTK, sklearn, gensim等程序包都可以实现TF-IDF的计算。除算法细节上会有差异外,更多的是数据输入/输出格式上的不同。
输出结果会自动按照TF-IDF值降序排列,并且直接给出的是词条而不是字典ID,便于阅读使用。
可在计算TF-IDF时直接完成分词,并使用停用词表和自定义词库,非常方便。
有默认的IDF语料库,可以不训练模型,直接进行计算。
以单个文本为单位进行分析。
jieba.analyse.extract_tags(
sentence 为待提取的文本
topK = 20 : 返回几个 TF/IDF 权重最大的关键词
withWeight = False : 是否一并返回关键词权重值
allowPOS = () : 仅包括指定词性的词,默认值为空,即不筛选
)
jieba.analyse.set_idf_path(file_name)
关键词提取时使用自定义逆向文件频率(IDF)语料库,由词库和频率构成
劳动防护 13.900677652
生化学 13.900677652
奥萨贝尔 13.900677652
奧薩貝爾 13.900677652
考察队员 13.900677652
jieba.analyse.set_stop_words(file_name)
关键词提取时使用自定义停止词(Stop Words)语料库
jieba.analyse.TFIDF(idf_path = None)
新建 TFIDF模型实例
idf_path : 读取已有的TFIDF频率文件(即已有模型)
使用该实例提取关键词:TFIDF实例.extract_tags()
import jieba
import jieba.analyse
# 注意:函数是在使用默认的TFIDF模型进行分析!
jieba.analyse.extract_tags(chapter.txt[1])
['杨铁心',
'包惜弱',
'郭啸天',
'曲三',
'武官',
'颜烈',
...
'那道人',
'道长',
'小人',
'临安',
'皇帝',
'娘子']
jieba.analyse.extract_tags(chapter.txt[1], withWeight = True) # 要求返回权重值
[('杨铁心', 0.2498834204873144),
('包惜弱', 0.18612006491468935),
('郭啸天', 0.11546337360448321),
('曲三', 0.07238002524460141),
('武官', 0.06721002344141559),
...
('那道人', 0.04136001442548652),
('道长', 0.03963668049109125),
('小人', 0.034466678687905435),
('临安', 0.034466678687905435),
('皇帝', 0.034466678687905435),
('娘子', 0.03122667298477728)]
# 应用自定义词典改善分词效果
jieba.load_userdict('金庸小说词库.txt') # dict为自定义词典的路径
# 在TFIDF计算中直接应用停用词表
jieba.analyse.set_stop_words('停用词.txt')
TFres = jieba.analyse.extract_tags(chapter.txt[1], withWeight = True)
TFres[:10]
[('杨铁心', 0.249847403851326),
('包惜弱', 0.18609323873064282),
('郭啸天', 0.11544673143475064),
('曲三', 0.07236959283969444),
('武官', 0.06720033620828768),
('颜烈', 0.06375416512068319),
('说道', 0.058584908489276444),
('丘处机', 0.05774159721377919),
('杨二人', 0.0534156518578697),
('金兵', 0.05169256631406745)]
在前面jieba使用的是自己默认的idf语料库文件,这样也可以完成目标,当然也可以自己导idf文件入,idf主要是一个语料库,观察该词是否在其它文件经常出现,是否具有区分度,来精确判断是否适合当关键词
# 使用自定义TF-IDF频率文件
jieba.analyse.set_idf_path("idf.txt.big")
TFres1 = jieba.analyse.extract_tags(chapter.txt[1], withWeight = True)
TFres1[:10]
[('杨铁心', 0.249847403851326),
('包惜弱', 0.18609323873064282),
('郭啸天', 0.11544673143475064),
('曲三', 0.07236959283969444),
('武官', 0.06720033620828768),
('颜烈', 0.06375416512068319),
('说道', 0.058584908489276444),
('丘处机', 0.05774159721377919),
('杨二人', 0.0534156518578697),
('金兵', 0.05169256631406745)]
输出格式为矩阵,直接为后续的sklearn建模服务。
需要先使用背景语料库进行模型训练。
结果中给出的是字典ID而不是具体词条,直接阅读结果比较困难。
class sklearn.feature_extraction.text.TfidfTransformer()
发现参数基本上都不用动,所以这里就不介绍了…
需要提前用空格把词分好
from sklearn.feature_extraction.text import TfidfTransformer
txtlist = [ " ".join(m_cut(w)) for w in chapter.txt.iloc[:5]]
vectorizer = CountVectorizer() #构造一个实例,联想C语言
X = vectorizer.fit_transform(txtlist) # 将文本中的词语转换为词频矩阵
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(X) #基于词频矩阵X计算TF-IDF值
tfidf#结果是一个稀疏矩阵,较大,压缩存储,所以结果没有展示出来
<5x11572 sparse matrix of type ''
with 16832 stored elements in Compressed Sparse Row format>
tfidf.toarray() # 稀疏矩阵转换为数组
array([[0. , 0. , 0. , ..., 0.00574085, 0. ,
0. ],
[0. , 0. , 0. , ..., 0. , 0. ,
0. ],
[0.01957186, 0. , 0. , ..., 0. , 0. ,
0. ],
[0. , 0.00663519, 0. , ..., 0. , 0. ,
0. ],
[0. , 0. , 0.00647461, ..., 0. , 0.00647461,
0.00647461]])
tfidf.todense() # 转换为标准矩阵
matrix([[0. , 0. , 0. , ..., 0.00574085, 0. ,
0. ],
[0. , 0. , 0. , ..., 0. , 0. ,
0. ],
[0.01957186, 0. , 0. , ..., 0. , 0. ,
0. ],
[0. , 0.00663519, 0. , ..., 0. , 0. ,
0. ],
[0. , 0. , 0.00647461, ..., 0. , 0.00647461,
0.00647461]])
tfidf.todense().shape
(5, 11572)
print("字典长度:", len(vectorizer.vocabulary_))
vectorizer.vocabulary_
字典长度: 11572
{'第一回': 8687,
'风雪': 11268,
'惊变': 5273,
'说话': 9814,
...
'重甸甸': 10755,
'铁铸': 10857,
'八角形': 1876,
'八卦': 1870,
...}
输出格式为list,目的也是为后续的建模分析服务。
需要先使用背景语料库进行模型训练。
结果中给出的是字典ID而不是具体词条,直接阅读结果比较困难。
gensim也提供了sklearn的API接口:sklearn_api.tfidf,可以在sklearn中直接使用。
# 文档分词及预处理
chaplist = [m_cut(w) for w in chapter.txt.iloc[:5]]
chaplist
[['第一回',
'风雪',
'惊变',
...
'摇头',
'郭啸天',
...],
['第二回',
'江南七怪',
'颜烈',
...
'姓名',
'详为',
...],
...
['第五回',
'弯弓',
'射雕',
...
'江南',
'六怪',
...]]
from gensim import corpora, models
# 生成文档对应的字典和bow稀疏向量
dictionary = corpora.Dictionary(chaplist)
corpus = [dictionary.doc2bow(text) for text in chaplist] # 仍为list in list
corpus
[[(0, 1),
(1, 30),
(2, 1),
(3, 1),
...],
[(1, 39),
(4, 1),
(7, 8),
...
(3831, 1),
(3832, 1),
...],
...]
tfidf_model = models.TfidfModel(corpus) # 建立TF-IDF模型
corpus_tfidf = tfidf_model[corpus] # 对所需文档计算TF-IDF结果
corpus_tfidf
corpus_tfidf[3] # 列出所需文档的TF-IDF计算结果
[(10, 0.004047708120002091),
(11, 0.0035363142432901736),
(12, 0.0017681571216450868),
...
(6505, 0.02178166440641619),
(6510, 0.008095416240004183),
(6530, 0.014521109604277462),
...]
dictionary.token2id # 列出字典内容
{'一两天': 0,
'一个': 1,
'一个个': 2,
'一个二十': 3,
'一个月': 4,
...
'各物': 995,
'各路': 996,
'吆喝': 997,
'合力': 998,
'合拢': 999,
...}
jieba.analyse.textrank(
sentence,
topK=20,
withWeight=False,#是否将相应的权重一起输出
allowPOS=('ns', 'n', 'vn', 'v') #默认是过滤词性的,和2.1.1的参数要区分开
)
jieba.analyse.textrank(chapter.txt[1], topK=20, withWeight = True)
#如果加入了allowPOS属性,里面不写变量,则全部过滤,输出结果为空
[('官兵', 1.0),
('武官', 0.9502084547170757),
('丘处机', 0.7759100378553069),
...
('贫道', 0.31106256778351027),
('铁枪', 0.3089179102852321),
('双手', 0.30592655095990534)]
请使用《射雕》全文计算出jieba分词的IDF语料库,然后使用该语料库重新对第一章计算关键词。比较这样的分析结果和以前有何不同。
请自行编制将jieba分词的TF-IDF结果转换为文档-词条矩阵格式的程序。
请自行思考本章提供的三种TF-IDF实现方式的使用场景是什么。
#1.计算出全文的tfidf
jieba.load_userdict('金庸小说词库.txt') # dict为自定义词典的路径
# 在TFIDF计算中直接应用停用词表
jieba.analyse.set_stop_words('停用词.txt')
raw.set_index('chap')
raw0=str(raw.groupby(by='chap').txt.sum())#将所有章节连在一起
TFres = jieba.analyse.extract_tags(raw0, withWeight = True)
TFres[:10]
[('...', 0.8690522475512411),
('郭靖', 0.27555315166258865),
('黄蓉', 0.12717837769042553),
('欧阳锋', 0.08478558512695035),
('黄药师', 0.07025282165638298),
('不多时', 0.06358918884521277),
('两人', 0.06358918884521277),
('说道', 0.06358918884521277),
('周伯通', 0.04929318316312057),
('一件', 0.042392792563475175)]
#将全文idf文件转为df并将其导出
df1 = pd.DataFrame(data = TFres,
columns = [ 'var2', 'var3' ]
)
df1.to_csv('shediao_idf.txt', columns =['var2', 'var3'], index = False)
#header要和表列的个数相对应
# 使用全文DF频率文件处理第一章内容
jieba.analyse.set_idf_path("shediao_idf.txt")
TFres2 = jieba.analyse.extract_tags(chapter.txt[1], withWeight = True)
TFres2[:10]
[('杨铁心', 0.249847403851326),
('包惜弱', 0.18609323873064282),
('郭啸天', 0.11544673143475064),
('官兵', 0.07409267838349667),
('曲三', 0.07236959283969444),
('武官', 0.06720033620828768),
('颜烈', 0.06375416512068319),
('丘处机', 0.06203107957688094),
('说道', 0.058584908489276444),
('杨二人', 0.0534156518578697)]
# 使用jieba自带TF-IDF频率文件,显然两者有着明显的区别
jieba.analyse.set_idf_path("idf.txt.big")
TFres1 = jieba.analyse.extract_tags(chapter.txt[1], withWeight = True)
TFres1[:10]
[('杨铁心', 0.249847403851326),
('包惜弱', 0.18609323873064282),
('郭啸天', 0.11544673143475064),
('曲三', 0.07236959283969444),
('武官', 0.06720033620828768),
('颜烈', 0.06375416512068319),
('说道', 0.058584908489276444),
('丘处机', 0.05774159721377919),
('杨二人', 0.0534156518578697),
('金兵', 0.05169256631406745)]
#jieba分词的TF-IDF结果转换为文档-词条矩阵
在scikit-learn中,LDA主题模型的类被放置在sklearn.decomposition.LatentDirichletAllocation类中,其算法实现主要基于变分推断EM算法,而没有使用基于Gibbs采样的MCMC算法实现。
注意由于LDA是基于词频统计的,因此理论上一般不宜用TF-IDF来做文档特征,但并非不能尝试。实际分析中也确实会见到此类操作。
class sklearn.decomposition.LatentDirichletAllocation(
n_components = None : 隐含主题数K,需要设置的最重要参数。
K的设定范围和具体的研究背景有关。
K越大,需要的文档样本越多。
doc_topic_prior = None : 文档主题先验Dirichlet分布的参数α,未设定则用1/K。
topic_word_prior = None : 主题词先验Dirichlet分布的参数η,未设定则用1/K。
learning_method = 'online' : 即LDA的求解算法。'batch' | 'online'
batch: 变分推断EM算法,会将将训练样本分批用于更新主题词分布,新版默认算法。
样本量不大只是用来学习的话用batch比较好,这样可以少很多参数要调。
需注意n_components(K), doc_topic_prior(α), topic_word_prior(η)
online: 在线变分推断EM算法,大样本时首选。
需进一步注意learning_decay, learning_offset,
total_samples和batch_size等参数。
仅在online算法时需要设定的参数
learning_decay = 0.7 :控制"online"算法的学习率,一般不用修改。
取值最好在(0.5, 1.0],以保证"online"算法渐进的收敛。
learning_offset = 10. :用来减小前面训练样本批次对最终模型的影响。 取值要大于1。
total_samples = 1e6 : 分步训练时每一批文档样本的数量。
使用partial_fit进行模型拟合时才需要此参数。
batch_size = 128 : 每次EM算法迭代时使用的文档样本的数量。
)
除直接使用分词清理后文本进行转换外,也可以先计算关键词的TF-IDF值,然后使用关键词矩阵进行后续分析。
# 设定分词及清理停用词函数
stoplist = list(pd.read_csv('停用词.txt', names = ['w'], sep = 'aaa',
encoding = 'utf-8', engine='python').w)
import jieba
def m_cut(intxt):
return [ w for w in jieba.cut(intxt)
if w not in stoplist and len(w) > 1 ]
# 生成分词清理后章节文本
cleanchap = [ " ".join(m_cut(w)) for w in chapter.txt]
# 将文本中的词语转换为词频矩阵
from sklearn.feature_extraction.text import CountVectorizer
countvec = CountVectorizer(min_df = 5)
wordmtx = countvec.fit_transform(cleanchap)
#基于词频矩阵X计算TF-IDF值
from sklearn.feature_extraction.text import TfidfTransformer
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(wordmtx)
tfidf
<40x6534 sparse matrix of type ''
with 72473 stored elements in Compressed Sparse Row format>
# 设定LDA模型
from sklearn.decomposition import LatentDirichletAllocation
n_topics = 10
ldamodel = LatentDirichletAllocation(n_components = n_topics)
# 拟合LDA模型
ldamodel.fit(tfidf)
LatentDirichletAllocation()
print(ldamodel.components_.shape)
ldamodel.components_[:2]
(10, 6534)
array([[0.1 , 0.10000001, 0.1 , ..., 0.10000001, 0.10000001,
0.1 ],
[0.1 , 0.10000001, 0.1 , ..., 0.10000001, 0.10000001,
0.1 ]])
# 主题词打印函数(直接使用即可)
def print_top_words(model, feature_names, n_top_words):
for topic_idx, topic in enumerate(model.components_):
print("Topic #%d:" % topic_idx)
print(" ".join([feature_names[i]
for i in topic.argsort()[:-n_top_words - 1:-1]]))
print()
n_top_words = 12
tf_feature_names = countvec.get_feature_names()
print_top_words(ldamodel, tf_feature_names, n_top_words)
Topic #0:
更要 当者 可怕 完毕 声震 极好 说笑话 无双 常听 之侧 人情 撕成
...
Topic #9:
郭靖 黄蓉 欧阳锋 洪七公 师父 黄药师 说道 周伯通 一个 裘千仞 武功 黄蓉道
class gensim.models.ldamodel.LdaModel(
corpus = None : 用于训练模型的语料
num_topics = 100 : 准备提取的主题数量
id2word = None : 所使用的词条字典,便于结果阅读
passes = 1 :模型遍历语料库的次数,次数越多模型越精确,但是也更花时间
)
用新出现的语料更新模型
ldamodel.update(other_corpus)
gensim也提供了sklearn的API接口:sklearn_api.ldamodel,可以在sklearn中直接使用。
print_topics(num_topics=20, num_words=10)
stoplist = list(pd.read_csv('停用词.txt', names = ['w'], sep = 'aaa',
encoding = 'utf-8', engine='python').w)
import jieba
def m_cut(intxt):
return [ w for w in jieba.cut(intxt)
if w not in stoplist and len(w) > 1 ]
# 文档预处理,提取主题词
chaplist = [m_cut(w) for w in chapter.txt]#不需要加空格,不同库的格式要求不同
# 生成文档对应的字典和bow稀疏向量
from gensim import corpora, models
dictionary = corpora.Dictionary(chaplist)
corpus = [dictionary.doc2bow(text) for text in chaplist] # 仍为list in list
tfidf_model = models.TfidfModel(corpus) # 建立TF-IDF模型
corpus_tfidf = tfidf_model[corpus] # 对所需文档计算TF-IDF结果
corpus_tfidf
from gensim.models.ldamodel import LdaModel
# 列出所消耗的时间备查
%time ldamodel = LdaModel(corpus_tfidf, id2word = dictionary, \
num_topics = 10, passes = 2)
Wall time: 3.41 s
ldamodel.print_topics()#相比sklearn之下这个没问题
[(0,
'0.000*"傻姑" + 0.000*"瀑布" + 0.000*"那公子" + 0.000*"水帘" + 0.000*"那书生" + 0.000*"周伯通" + 0.000*"松柴" + 0.000*"一灯" + 0.000*"欧阳锋" + 0.000*"穆易"'),
(1,
'0.000*"铁木真" + 0.000*"哲别" + 0.000*"那长须" + 0.000*"箫声" + 0.000*"黄裳" + 0.000*"博尔" + 0.000*"周伯通" + 0.000*"完颜洪熙" + 0.000*"棺材" + 0.000*"李萍"'),
(2,
'0.000*"傻姑" + 0.000*"裘千仞" + 0.000*"黄药师" + 0.000*"欧阳锋" + 0.000*"柯镇恶" + 0.000*"简长老" + 0.000*"简管家" + 0.000*"爷爷" + 0.000*"完颜康" + 0.000*"黄蓉"'),
...
(8,
'0.000*"黎生" + 0.000*"大梁" + 0.000*"欧阳克" + 0.000*"李萍" + 0.000*"小姐" + 0.000*"欧阳锋" + 0.000*"蹄印" + 0.000*"程大" + 0.000*"大汗" + 0.000*"布袋"'),
(9,
'0.000*"周伯通" + 0.000*"欧阳锋" + 0.000*"洪七公" + 0.000*"弹子" + 0.000*"小艇" + 0.000*"经书" + 0.000*"鲁有脚" + 0.000*"桅杆" + 0.000*"成吉思汗" + 0.000*"老顽童"')]
# 计算各语料的LDA模型值
corpus_lda = ldamodel[corpus_tfidf] # 此处应当使用和模型训练时相同类型的矩阵
for doc in corpus_lda:
print(doc)#40个章节对应上述的几个主题,会出现多主题的情况
ldamodel.get_topics()
[(0, 0.0167947), (1, 0.016795123), (2, 0.016795522), (3, 0.8488367), (4, 0.016794804), (5, 0.016794944), (6, 0.016802292), (7, 0.016794857), (8, 0.016796084), (9, 0.016794963)]
[(0, 0.01247625), (1, 0.012476358), (2, 0.012476889), (3, 0.01248025), (4, 0.012476468), (5, 0.012476289), (6, 0.8877082), (7, 0.012476381), (8, 0.012476513), (9, 0.01247638)]
...
[(0, 0.016821139), (1, 0.016821587), (2, 0.016831353), (3, 0.01682199), (4, 0.016823184), (5, 0.01682097), (6, 0.01684322), (7, 0.8485669), (8, 0.016822554), (9, 0.016827127)]
array([[2.3060953e-05, 2.2531289e-05, 2.3400156e-05, ..., 2.2531291e-05,
2.2531291e-05, 2.2531291e-05],
[2.2603675e-05, 2.2518667e-05, 2.3565068e-05, ..., 2.2518669e-05,
2.2518669e-05, 2.2518669e-05],
...,
[2.2330050e-05, 2.2330049e-05, 2.3422241e-05, ..., 2.2751270e-05,
2.2698418e-05, 2.2756312e-05]], dtype=float32)
# 检索和文本内容最接近的主题
query = chapter.txt[1] # 检索和第1章最接近的主题
query_bow = dictionary.doc2bow(m_cut(query)) # 频数向量
query_tfidf = tfidf_model[query_bow] # TF-IDF向量
print("转换后:", query_tfidf[:10])
ldamodel.get_document_topics(query_bow) # 需要输入和文档对应的bow向量
转换后: [(0, 0.007578481591216121), (2, 0.0023179950040969773), (3, 0.009331977120255835), (4, 0.004071490533136692), (5, 0.006552752461545683), (6, 0.009331977120255835), (7, 0.00044833572213007265), (8, 0.001013406848590495), (9, 0.005824986062176406), (10, 0.004409292816000191)]
[(3, 0.8504346), (6, 0.14895077)]
# 检索和文本内容最接近的主题,和上面的代码效果一样###
ldamodel[query_tfidf]
[(0, 0.016795084),
(1, 0.016795507),
(2, 0.016795907),
(3, 0.8488332),
(4, 0.016795186),
(5, 0.016795328),
(6, 0.01680269),
(7, 0.01679524),
(8, 0.016796468),
(9, 0.016795348)]
在其余参数全部固定不变的情况下,尝试分别用清理前矩阵、清理后原始矩阵、TF-IDF矩阵进行LDA模型拟合,比较分析结果。
在gensim拟合LDA时,分别将passes参数设置为1、5、10、50、100等,观察结果变化的情况,思考如何对该参数做最优设定。
请尝试对模型进行优化,得到对本案例较好的分析结果。
提示:使用gensim进行拟合更容易一些。
#使用gensim,上文示例给出的是基于idf文档的拟合结果
#清理后的矩阵的LDA拟合(passes=1)时候的结果
dictionary = corpora.Dictionary(chaplist)
corpus = [dictionary.doc2bow(text) for text in chaplist] # 仍为list in list
from gensim.models.ldamodel import LdaModel
ldamodel = LdaModel(corpus, id2word = dictionary, \
num_topics = 10, passes = 1)
ldamodel.print_topics()#相比sklearn之下这个没问题
# 计算各语料的LDA模型值
corpus_lda = ldamodel[corpus] # 此处应当使用和模型训练时相同类型的矩阵
for doc in corpus_lda:
print(doc)#40个章节对应上述的几个主题,会出现多主题的情况
ldamodel.get_topics()
[(4, 0.46530876), (7, 0.53052175)]
[(0, 0.057168692), (2, 0.09194715), (5, 0.02192355), (7, 0.75805956), (8, 0.057155814)]
[(7, 0.99722373)]
[(7, 0.99484575)]
...
[(0, 0.99319243)]
[(0, 0.9998067)]
[(0, 0.034050334), (1, 0.910372), (4, 0.05363397)]
[(0, 0.99984735)]
array([[8.59124611e-06, 3.58081236e-03, 6.77516146e-05, ...,
6.33762374e-06, 6.78440847e-06, 6.12677059e-06],
[8.52732683e-06, 3.62049975e-03, 7.63109711e-05, ...,
7.85666634e-06, 7.08429025e-06, 5.72448744e-06],
[1.27389158e-05, 2.93019903e-03, 1.07837979e-04, ...,
9.00865962e-06, 8.63752484e-06, 1.00059715e-05],
...,
[1.11827139e-05, 4.28883312e-03, 6.96640418e-05, ...,
7.21145489e-06, 6.62511411e-06, 6.54563792e-06],
[1.02229851e-05, 4.21934389e-03, 7.37137962e-05, ...,
7.38903054e-06, 6.87136480e-06, 7.47923696e-06],
[9.25033692e-06, 3.29013146e-03, 7.75957305e-05, ...,
6.63421406e-06, 6.60454225e-06, 7.50771369e-06]], dtype=float32)
# 检索和文本内容最接近的主题
query = chapter.txt[1] # 检索和第1章最接近的主题
query_bow = dictionary.doc2bow(m_cut(query)) # 频数向量
query_tfidf = tfidf_model[query_bow] # TF-IDF向量
print("转换后:", query_tfidf[:10])
ldamodel.get_document_topics(query_bow) # 需要输入和文档对应的bow向量
转换后: [(0, 0.007298886193176102), (2, 0.002232476456875532), (3, 0.008987689438609624), (4, 0.003921279702309054), (5, 0.006310999623501304), (6, 0.008987689438609624), (7, 0.0004317951258146039), (8, 0.0009760188985377363), (9, 0.005610082947742579), (10, 0.004246619335154967)]
[(4, 0.46046656), (7, 0.5355382)]
#passes=5
dictionary = corpora.Dictionary(chaplist)
corpus = [dictionary.doc2bow(text) for text in chaplist] # 仍为list in list
from gensim.models.ldamodel import LdaModel
ldamodel = LdaModel(corpus, id2word = dictionary, \
num_topics = 10, passes = 5)
ldamodel.print_topics()#相比sklearn之下这个没问题
# 计算各语料的LDA模型值
corpus_lda = ldamodel[corpus] # 此处应当使用和模型训练时相同类型的矩阵
for doc in corpus_lda:
print(doc)#40个章节对应上述的几个主题,会出现多主题的情况
ldamodel.get_topics()
# 检索和文本内容最接近的主题
query = chapter.txt[1] # 检索和第1章最接近的主题
query_bow = dictionary.doc2bow(m_cut(query)) # 频数向量
query_tfidf = tfidf_model[query_bow] # TF-IDF向量
print("转换后:", query_tfidf[:10])
ldamodel.get_document_topics(query_bow) # 需要输入和文档对应的bow向量
[(3, 0.9998699)]
[(3, 0.9998621)]
[(6, 0.9998502)]
[(6, 0.9998516)]
...
[(6, 0.039239276), (9, 0.9606294)]
[(6, 0.99980944)]
[(8, 0.9998105)]
[(9, 0.99985135)]
转换后: [(0, 0.007298886193176102), (2, 0.002232476456875532), (3, 0.008987689438609624), (4, 0.003921279702309054), (5, 0.006310999623501304), (6, 0.008987689438609624), (7, 0.0004317951258146039), (8, 0.0009760188985377363), (9, 0.005610082947742579), (10, 0.004246619335154967)]
[(3, 0.9998699)]
#passes=50
dictionary = corpora.Dictionary(chaplist)
corpus = [dictionary.doc2bow(text) for text in chaplist] # 仍为list in list
from gensim.models.ldamodel import LdaModel
ldamodel = LdaModel(corpus, id2word = dictionary, \
num_topics = 10, passes = 50)
ldamodel.print_topics()#相比sklearn之下这个没问题
# 计算各语料的LDA模型值
corpus_lda = ldamodel[corpus] # 此处应当使用和模型训练时相同类型的矩阵
for doc in corpus_lda:
print(doc)#40个章节对应上述的几个主题,会出现多主题的情况
ldamodel.get_topics()
# 检索和文本内容最接近的主题
query = chapter.txt[1] # 检索和第1章最接近的主题
query_bow = dictionary.doc2bow(m_cut(query)) # 频数向量
query_tfidf = tfidf_model[query_bow] # TF-IDF向量
print("转换后:", query_tfidf[:10])
ldamodel.get_document_topics(query_bow) # 需要输入和文档对应的bow向量
[(4, 0.9998702)]
[(6, 0.9998624)]
[(0, 0.99985033)]
...
[(0, 0.21487164), (9, 0.78495866)]
[(2, 0.9998108)]
[(7, 0.9998513)]
转换后: [(0, 0.007298886193176102), (2, 0.002232476456875532), (3, 0.008987689438609624), (4, 0.003921279702309054), (5, 0.006310999623501304), (6, 0.008987689438609624), (7, 0.0004317951258146039), (8, 0.0009760188985377363), (9, 0.005610082947742579), (10, 0.004246619335154967)]
[(4, 0.9998702)]
#passes=100
dictionary = corpora.Dictionary(chaplist)
corpus = [dictionary.doc2bow(text) for text in chaplist] # 仍为list in list
from gensim.models.ldamodel import LdaModel
ldamodel = LdaModel(corpus, id2word = dictionary, \
num_topics = 10, passes = 50)
ldamodel.print_topics()#相比sklearn之下这个没问题
# 计算各语料的LDA模型值
corpus_lda = ldamodel[corpus] # 此处应当使用和模型训练时相同类型的矩阵
for doc in corpus_lda:
print(doc)#40个章节对应上述的几个主题,会出现多主题的情况
ldamodel.get_topics()
# 检索和文本内容最接近的主题
query = chapter.txt[1] # 检索和第1章最接近的主题
query_bow = dictionary.doc2bow(m_cut(query)) # 频数向量
query_tfidf = tfidf_model[query_bow] # TF-IDF向量
print("转换后:", query_tfidf[:10])
ldamodel.get_document_topics(query_bow) # 需要输入和文档对应的bow向量
[(6, 0.9998702)]
[(2, 0.99986225)]
[(2, 0.99985033)]
...
[(2, 0.9998097)]
[(2, 0.7723416), (3, 0.20655443), (8, 0.020956578)]
[(8, 0.9998511)]
转换后: [(0, 0.007298886193176102), (2, 0.002232476456875532), (3, 0.008987689438609624), (4, 0.003921279702309054), (5, 0.006310999623501304), (6, 0.008987689438609624), (7, 0.0004317951258146039), (8, 0.0009760188985377363), (9, 0.005610082947742579), (10, 0.004246619335154967)]
[(6, 0.9998702)]