项目一:《文章关键信息提取》

一、数据介绍

输入文件中共508篇新闻报道

[liujie@master tfidf_articles]$ ls input_tfidf_dir | wc -l
508

其中,每个文件中的格式如下:

[liujie@master input_tfidf_dir]$ cat 287it.seg.cln.txt
北京 音响展 精彩 好 声音 北京 国际 音响展 落幕 搜狐 数码 
日 , 为期 三 天 的 北京 国际 音响展 在 中国 国家 会议 中心 进行 得 如火如荼 , 作为 全国 最 有 影响力 的 顶级 音响 汇聚 地 、 爱好者 的 朝拜 圣地 , 记者 在 现场 充分 体会 到 了 音响展 的 独特 魅力 。 北京 国际 音响展 作为 国内 久负盛名 的 一流 展会 , 多年 来 一直 是 产业 高端 技术 的 风向标 , 在 本届 展会 上 , 记者 就 看到 了 诸如 美国 魔声 、 天朗 、 瑞士 瑞宝 、 欧尼士 、 德国 、 英国 音乐 传 声 等等 一 批 国际 顶尖 品牌 , 吸引 了 众多 资深 发烧友 引颈 观看 。 
听众 在 现场 聆听 美妙 音乐 
开展 第一 天 虽然 不是 周末 , 但 这些 顶级 的 [| 音响 设备 |] 还是 吸引 了 不少 发烧 级 爱好者 到 现场 参观 。 一 位 现场 的 观众 表示 : 这些 动辄 上 百万 的 高端 音响 产品 , 一直 是 只 闻其 名 未 听 其 声 , 这次 知道 有 这么 个 展会 , 我 早就 请 好 假 , 做好 好好 的 享受 一番 的 准备 了 。 据 笔者 现场 体验 , 这些 高端 产品 的 音效 即使 细微 之 处 也 纤毫 毕露 、 毫无 杂质 , 确实 不同凡响 。 相 较 于 往届 , 本届 音响展 除了 一如既往 地 尽 展 顶尖 产品 风采 之外 , 还 吸引 了 不少 了 经济型 的 音响 品牌 , 包括 一些 我们 所 熟悉 的 国内 品牌 。 博远 音响 展会 负责人 告诉 记者 : 相对 于 国际性 的 老牌 高端 音响 产品 , 国产 品牌 的 价位 在 大众 消费群 里 更 具 亲和力 。 日 中午 , 被 很 多 与会者 期待 的 好 声音 等 你 秀 活动 正式 开始 , 周六 的 主题 是 音源 秀 。 随着 主持人 宣布 比赛 开始 , 众多 参赛者 按 顺序 登台 秀 自己 的 好 声音 作品 , 同时 , 为了 博得 现场 观众 和 专家 评委 的 认可 还 声情并茂 地 介绍 自己 采集 声源 的 有趣 情景 。 例如 , 一个 参赛者 提交 的 作品 是 婴儿 清脆 的 啼哭声 , 他 在 给 大家 展示 声音 时 不 忘 给 大家 讲述 初 为人 父 者 孩子 出生 之 时 的 狼狈 、 喜悦 与 感动 , 使得 现场 融洽 温馨 , 笑声 不断 。 另外 , 主办方 在 活动 中 还给 大家 展现 了 一 种 让 人 耳目一新 的 艺术形式 微声 剧 , 即 仅仅 通过 声音 来 制造 一 段 有 故事 、 有 内容 的 、 像 电影 一样 的 情节 。 据悉 : 主办方 已经 在 时代 [| 门户 网站 |] 上 开展 了 长期 的 微声 剧 征集 活动 。 
获奖者 合影 
在 日 的 活动 主题 为 方言 秀 , 需要 观众 上台 用 自己 家乡 的 话说 一 句 有关 绿色 、 环保 的 话 。 因为 参与 难度 低 现场 参观者 的 热情 都 非常 高 。 最 具 喜 感 的 是 一个 东北 小伙 的 小沈阳 式 方言 , 最 难听 明白 的 是 广东 方言 , 让 听众 们 颇 感 享受 的 则 是 一个 江南 女孩 的 吴侬 软语 。 天南地北 的 声音 凑 在 一起 说 着 差 不 多 的 话 , 既 让 现场 的 观众 玩儿 的 很 , 也 在 不知 不觉 中 宣传 了 环保 理念 。 
一 位 上海 大爷 正在 秀 自己 的 家乡话 
参赛者 表演 结束 后 , 通过 专家 点评 和 观众 投票 , 评选 出 当天 的 最佳 好 声音 , 并 给 获奖者 颁发 了 丰厚 的 奖品 和 [| 获奖 证书 |] 。 本届 北京 国际 影响 展 坚持 了 其 一贯 的 高端性 和 专业性 , 同时 , 也 通过 一 系列 的 活动 吸引 了 更 多 爱好者 的 关注 和 参与 。 作为 北京市 第七 届 文博会 的 一个 重要 组成部分 , 音响展 很 好 地 诠释 了 文化 、 科技 与 创意 的 完美 结合 。 
分享 

可以发现:文章已经用空格为间隔符进行分词,有些单词与空格和逗号相连,需要处理

二、代码介绍

convert.py:由于原始文件中每篇新闻都在一个文件中,因此需要将508篇文章统一合并到一个文档中,每一行代表一篇文章

import sys
import os

# 命令行参数—要处理的文件路径
file_path_dir = sys.argv[1]


def read_file_handler(f):
    """
    定义读取文件的函数
    :param f: 文件路径
    :return:
    """
    fd = open(f, 'r')
    return fd


file_name = 0
for pd in os.listdir(file_path_dir):
    content_list = []
    # 路径拼接
    file_path = file_path_dir + "/" + pd
    # 读取每个文件
    fd = read_file_handler(file_path)
    # 遍历文件每一行并添加到列表中
    for line in fd:
        content_list.append(line.strip())
    print('\t'.join([str(file_name), ' '.join(content_list)]))

    file_name += 1

使用命令行

(py36pt) [root@master tfidf_articles]# python convert.py input_tfidf_dir > tfidf_input.data

就可以生成需要的tfidf_input.data文件,其格式为:
在这里插入图片描述
map.py:统计每篇文章出现的词

import sys

for line in sys.stdin:
    line.strip()
    ss = line.strip().split('\t')
    if len(ss) != 2:
        continue

    file_name, file_content = ss
    word_list = file_content.strip().split(' ')

    # 得到每篇文章的词表集合
    word_set = set(word_list)
    for word in word_set:
        print('\t'.join([word, '1']))

使用命令行:

(py36pt) [root@master tfidf_articles]# cat tfidf_input.data | python map.py 

就可以得到
在这里插入图片描述使用命令行

(py36pt) [root@master tfidf_articles]# cat tfidf_input.data | python map.py | sort -k1 -nr

就可以输出并按照第一个字排序

reduce.py:计算排序后map的idf

import sys
import math

current_word = None
count = 0
doc_cnt = 508

for line in sys.stdin:
    ss = line.strip().split('\t')
    if len(ss) != 2:
        continue

    word, val = ss

    if current_word == None:
        current_word = word

    # 计算idf
    if current_word != word:
        idf = math.log10(doc_cnt / (float(count) + 1.0))
        print('\t'.join([current_word, str(idf)]))
        current_word = word
        count = 0

    count += int(val)

# 当循环结束时,最后一个词的idf未计算
idf = math.log10(doc_cnt / (float(count) + 1.0))
print('\t'.join([current_word, str(idf)]))

使用命令行

(py36pt) [root@master tfidf_articles]# cat tfidf_input.data | python map.py | sort -k1 -nr | python reduce.py  

就可以得到如下结果:
在这里插入图片描述

(py36pt) [root@master tfidf_articles]# cat tfidf_input.data | python map.py | sort -k1 -nr | python reduce.py | grep '的'
有的	2.972384909557
似的	5.131869158910372
目的	3.2860424684120413
美的电器	4.844187086458591
美的	3.6655320901169453
浪漫的事	5.537334267018537
的确	3.05242761723053620.0019704439872987385
成长的烦恼	5.537334267018537
别的	4.6210435351443815
标的	4.844187086458591
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幼稚的人呐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值