当前位置:首页 > 日记本 > 正文内容

根据关键词库提取文本里的关键词

zhangchap1年前 (2023-03-29)日记本152

实例一:用正则、for循环处理,适用于关键词库不多的情况

import re

# 定义关键词词库
keywords = ['赵震北沈阳演唱会', '衢州全明星演唱会', '丰都群星演唱会', '周传雄苏州演唱会', '刘若英西安演唱会', '五月天北京演唱会', '五月天武汉演唱会', '南山星空音乐节']

# 定义输入文本
text = "五月天北京演唱会的门票已经开售,衢州全明星演唱会赶周传雄苏州演唱会快来抢吧!"

# 对文本进行关键词匹配
matched_keywords = []
for keyword in keywords:
    pattern = re.compile(keyword)
    if pattern.search(text):
        matched_keywords.append(keyword)

# 输出匹配到的关键词
print("在输入文本中匹配到的关键词有:", matched_keywords)

实例二:定义 Trie 树节点类,适用于关键词库较多的情况

# 定义 Trie 树节点类
class TrieNode:
    def __init__(self):
        self.is_end = False  # 标记当前节点是否是某个关键词的结尾
        self.children = {}   # 存储子节点

# 定义 Trie 树类
class Trie:
    def __init__(self, keywords):
        self.root = TrieNode()  # 初始化根节点
        for keyword in keywords:
            self.insert(keyword)  # 将所有关键词插入到 Trie 树中

    def insert(self, word):
        node = self.root
        for char in word:
            if char not in node.children:  # 若当前字符不存在于 Trie 树中,则新建一个节点
                node.children[char] = TrieNode()
            node = node.children[char]  # 沿着 Trie 树向下遍历
        node.is_end = True  # 标记当前节点是某个关键词的结尾

    def search(self, text):
        matched_keywords = []  # 存储匹配到的关键词
        for i in range(len(text)):  # 从文本的每个位置开始匹配关键词
            node = self.root  # 每次匹配都从 Trie 树的根节点开始
            for j in range(i, len(text)):  # 沿着 Trie 树向下遍历,看能否匹配到关键词
                char = text[j]
                if char not in node.children:
                    break  # 若遇到某个字符不在 Trie 树中,则直接退出循环
                node = node.children[char]  # 继续向下遍历
                if node.is_end:  # 若匹配到了某个关键词的结尾,则说明匹配成功
                    matched_keywords.append(text[i:j+1])  # 将该关键词加入到匹配结果中
        return matched_keywords


# 定义关键词词库
keywords = ['赵震北沈阳演唱会', '衢州全明星演唱会', '丰都群星演唱会', '周传雄苏州演唱会', '刘若英西安演唱会', '五月天北京演唱会', '五月天武汉演唱会', '南山星空音乐节']

# 初始化 Trie 树
trie = Trie(keywords)

# 定义输入文本
text = "五月天北京演唱会的门票已经刘若英西安演唱会开售,南山星空音乐节赶快来抢吧!"

# 对文本进行关键词匹配
matched_keywords = trie.search(text)

# 输出匹配到的关键词
print("在输入文本中匹配到的关键词有:", matched_keywords)


分享给朋友:

相关文章

CDN下 Nginx开启PC/M识别跳到对应的域名下访问,css/js死循环问题

背景: 新做了一个网站:   服务器操作系统:Linux;   WEB服务器版本:nginx/1.16.1; 问题:...

如何为精简的 CSS 文件删除未使用的 CSS

如何为精简的 CSS 文件删除未使用的 CSS

精简的网站比臃肿的网站运行得更快,这已经不是什么秘密了。不要让不必要的 CSS 拖累您的 Web 项目;使用下面描述的工具和技术来帮助您删除未使用的 CSS 并提高您网站的整体性能。什么是未使用的 C...

python提高运行速度numba.jit

使用numba.jit。 numba可以将 Python 函数 JIT 编译为机器码执行,大大提高代码运行速度。import time def computeSum(size:&...

python下elasticsearch简单接口操作

# -*- coding:utf-8 -*- # elasticsearch 默认算法bm25 from elasticsearch&n...

python下random随机选择的三种方式

from random import sample,choice,choices list_1 = [1,2,3,4,5,6] # 从列...

python chardet模块自动识别编码

import chardet str = b'Hello word' str1 = '你好,世界。'.e...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。