将文章标题标签存入数据库

紧接着之前获取完文章标题标签完之后的操作

一个获取大量文章标题标签的办法

使用完nltk分词对文章标题分类之后

延续之前的思路开始实现

过程中遇到的一些问题

获取方法的问题

python方面

如果是采用方法1手写的ngram标签采集方法,那么可以很方便的获取词频以及标签
如果是方法2,Text.collocations()方法返回的是none
这里写图片描述
源码中可以很清楚的看到其实现用了比方法1更科学的分析方法,但是其并没有返回那个2gram集合出来,而是打印到了控制台上。

mongo方面

要求对文章标题精确检索到含有标签的,不重复的加上标签

解决方法

对于Text.collocations(),在百度获取控制台的输出无果之后,研究了两个英文文档
http://nltk.readthedocs.io/en/latest/api/nltk.html#
https://stackoverflow.com/questions/4128583/how-to-find-collocations-in-text-python
特别是第二篇的
这里写图片描述
这个骚操作令我眼前一亮,先执行一次Text.collocations(),然后Text类中就保存好了_collocations这个成员变量,还有这种操作,那个函数不返回值的方法解决了,虽然这并不面向对象


数据库方面
查阅官方文档
使用到了三种命令的组合
文本索引
标签不重复添加
updateMany

完整代码

from pymongo import MongoClient
import util


class ArticleTag():

    def __init__(self) -> None:
        print("#数据库连接启动")
        super().__init__()
        self.__client = MongoClient(util.MONGODB, 27017)
        self.__db = self.__client.ccf

    def __del__(self):
        print("#数据库连接关闭")
        self.__client.close()

    def getTag(self, num=20, window_size=2):
        print("#开始获取文章的标签")
        data = self.__client.ccf.article.find()  # 连接上mongo数据库
        text = ""
        for a in data:  # 将标题拼接成一个文本
            text += " " + a['title']
        from nltk import word_tokenize
        # 使用nltk Python 自然语言处理库
        from nltk import Text
        text = text.lower()  # 将文本转换为小写方便去重
        text = word_tokenize(text)  # 分词
        text = Text(text)  # 构造成nltk文本
        text.collocations(num=num, window_size=window_size)
        list = text._collocations
        return list

    def label(self, tags: list):
        print("#开始写入文章标签")
        db = self.__db
        for tag in tags:
            # db.arryindex.updateMany({"$text": {"$search": "\"west\" "}}, {"$addToSet": {"tag": "kailin"}})
            print(tag)
            db.article.update_many({"$text": {"$search": "\"" + tag + "\""}}, {"$addToSet": {"tag": tag}})

测试结果

数据量是400多条文章标题

这里写图片描述

速度挺快的

这里写图片描述

文章也相应的被打上了标签,有些文章因为没有其他文章跟其有相同的关键词,就没有没打上标签,在数据量足够大的情况下,没有标签的文章会少很多

扫描二维码关注公众号,回复: 1071017 查看本文章

猜你喜欢

转载自blog.csdn.net/qq965194745/article/details/79319627