基于关键词提取关系模式

基于关键词提取关系模式

背景

在上一篇文章《LDA主题模型提取文本中的关键词》中,简单介绍关于LDA模型提取关键词的方法。关键词匹配用于文本分类,检测速度非常快,但也存在准确率和召回率低的问题。实际上,采用关系模式匹配的方法,能够在规则层面提高准召,本文讲简单介绍如何基于关键词来提取关系模式。

理论

分治策略,将语料库中的文本根据是否包含触发词划分成两部分:包含触发词的语料,提取关系模式,解决关键词的准确率问题;不包含触发词的语料提取关系模式,解决关键词的召回率问题。

完整代码

import spacy
import networkx as nx
import re
import os
import random
import numpy as np
import sys
from tqdm import tqdm


# cut sentence
def cut_sent(para):
    para = re.sub('([。!?\?])([^”’])', r"\1\n\2", para)
    para = re.sub('(\.{6})([^”’])', r"\1\n\2", para)
    para = re.sub('(\…{2})([^”’])', r"\1\n\2", para)
    para = re.sub('([。!?\?][”’])([^,。!?\?])', r'\1\n\2', para)
    para = para.rstrip()
    return para.split("\n")


# extract relation patterns
def extract_patterns(sent_list, keyWord_path):
    results_list = []
    other_sent_list = []
    results_token = []
    
    for sent in sent_list:
        doc = nlp(sent)
        
        tokens = []
        for token in doc:
            if token.tag_ in ['VV', 'NN', 'NNP']:
                tokens.append(token)
        results_token.append(tokens)
        
        edges = []
        for token in doc
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值