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

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

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

实例一:用正则、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)


分享给朋友:

相关文章

【轻断食】测试了半个月没什么用

【轻断食】测试了半个月没什么用

无意间在某个地方看到了一个提轻断食的,国外一本介绍一种减肥方法的书,年前在掌阅上买了一本书,在上下地铁上研究了几个早上,觉得可行性很好,过了年就测试了一下,但是试了半个月,不增不减...

更换服务器需要设置的几点

此设置只针对个人习惯,因为需要开通的网站及服务器较多,做个记录!就不公开了 此设置只针对个人习惯,因为需要开通的网站及服务器较多,做个记录!就不公开了 此设置只针对个人习惯,因为需要开...

火狐添加自定义搜索引擎

直接网址搜索自定义添加:https://mycroftproject.com/...

python补全网址代码示例

from urllib.parse import urljoin absurl = urljoin(backend,url) #backend:根...

python jieba分词

import jieba from jieba.analyse import tfidf words = jieba.lcut('...

python url.parse模块编码解码

from urllib.parse import quote,unquote,urlencode # 对汉字进行编码使用 quote ...

发表评论

访客

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