曼城新闻mongo数据库分词及提取关键词工具

英超各队队歌_英超球队队歌故事_英超的歌

英超各队队歌_英超球队队歌故事_英超的歌

爬虫捕获新闻

新闻门户会对新闻进行分类并通过标签进行管理。 例如,如果您打开此页面,您可以一页一页地阅读阿森纳新闻。 这里我使用模拟浏览器翻页操作来保存每篇新闻文章的网页链接。 接下来,如何捕获新闻中的文本,我使用它,它可以帮助我从复杂的网页结构中提取出纯文本部分。 并保存它。

from pattern import web
from bs4 import BeautifulSoup
def parse(response):
    # 解析html
    dom = web.Element(response.text)
    # 提取文章标题
    article_title = str(dom.by_tag('h1.article-a__title')[0].content.encode('utf-8')).strip()
    # 提取文章发表日期
    date = str(dom.by_tag('span.article-a__time')[0].content.encode('utf-8'))
    # 提取文章标签
    tags = [str(tag.content.encode('utf-8')) for tag in dom.by_tag('section.article-a_keywords')[0].by_tag('a')]
    # 锁定文章文本
    article = dom.by_tag('div.article-a__content')[0]
    # 分段落提取文章文本内容
    article_content = ''
    for ele in article.by_tag('p'):
        article_content += ele.content
        text = str(BeautifulSoup(article_content, "html.parser").get_text().encode('utf-8')).strip()

为了方便数据组织和后续处理英超球队队歌故事,我采用将消息存储在Mongo数据库中。 每条记录存储新闻文章的标题、发布日期、标签和文本内容。 截图如下。

英超各队队歌_英超球队队歌故事_英超的歌

曼城新闻mongo数据库分词及关键词提取

有了数百篇与团队相关的新闻文章,下一步就是清理文本数据。 我用的是jieba分词工具。 这里就不讲内部算法原理了。 你可以简单理解为它按照词性来划分每个句子,起到了将“我爱北京天安门”划分为“我/爱/北京天安门”的效果。 那么这个句子就变成了一个独立的单词,然后根据单词单元来统计出现的频率。 最后,按频率降序列出 100 个最常提及的单词。

from jieba.analyse import extract_tags
import jieba
# 停止词
jieba.analyse.set_stop_words(stop_words_path='停止词.txt')
# 词典语料库
jieba.load_userdict(f='词典语料库.txt')
# jieba提取文本的关键词
keywords = extract_tags(text, topK=100, withWeight=True, allowPOS=())
for word, weight in keywords:
    print(word)
>> 万英镑
加盟
续约
合同
主帅
替补
希望
转会
今夏
...

在足球报道中,经常会提到一些术语,比如主场、客场、犯规、赛后等。 这些词在所有球队新闻中都很常见。 也就是说,我们不关心这些词英超球队队歌故事,需要在“.txt”中英超球队队歌故事,如果手动添加的话,jieba分词工具会屏蔽掉这些词。

英超球队队歌故事_英超各队队歌_英超的歌

另外,我们需要手动将一些球员的名字添加到“ .txt”中,这样​​分词工具就不会将“”理解为和Zette。

英超各队队歌_英超球队队歌故事_英超的歌

使用创建团队词云

在上一步中,我们已经为数百条球队新闻提出了关键词。 (被提及最多的100个词)接下来画一个词云。 只需要十几行代码。

from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from matplotlib import pyplot as plt
import numpy as np
# 设置背景图片
background = np.array(Image.open("温格.png"))
#background = np.array(Image.open("瓜迪奥拉.png"))
wc = WordCloud(background_color="white", max_words=1000, mask=background, 
               max_font_size=500, random_state=444, font_path='SimSun.TTC')
# 生成词云, keywords是上一步中jieba提取的关键词
wc.generate_from_frequencies(dict(keywords))
# 从背景图片生成颜色值
image_colors = ImageColorGenerator(background)
# 以下代码显示图片
plt.figure(figsize=(10, 8))
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
# 绘制词云
# recolor wordcloud and show
plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
plt.axis("off")
# 绘制背景图片为颜色的图片
plt.figure()
plt.imshow(background, cmap=plt.cm.gray)
plt.axis("off")
# 保存图片
#wc.to_file(path.join(d, "名称.png"))

下面是阿森纳的效果图。 那里有两个。 图 1 中出现的大多数球员名字都是本赛季活跃的。 当然,阿森纳和温格是最常被提及的。 其次是桑切斯和厄齐尔。 请注意,字体越大,出现的次数就越多。

英超的歌_英超各队队歌_英超球队队歌故事

阿森纳词云图片1

当我屏蔽球员的名字时,我可以看到更多有价值的信息,这也符合阿森纳目前的情况。 状态不佳,不少当家球星都卷入转会传闻。

英超各队队歌_英超球队队歌故事_英超的歌

阿森纳词云图片2

下面是本赛季英超冠军热门球队曼城。 我用瓜迪奥拉作为背景。 本赛季表现出色的德布劳内、阿奎罗、斯特林,字体都很大。

英超球队队歌故事_英超的歌_英超各队队歌

曼城词云图片1

我屏蔽了球员和教练的名字后出现的词云可能会给我们更直观的感受。 曼城本赛季意味着进球、连胜、冠军。

英超球队队歌故事_英超各队队歌_英超的歌

曼城词云图2

超过。

标签: 英超球队队歌故事