专利SAO(主语-动作-宾语)提取

实现一个自然语言处理(NLP)流程,用于从专利文本中提取主语-动作-宾语(SAO)结构。使用Stanford CoreNLP进行句法分析,使用NLTK进行文本处理。

客户名字

追逐我的明天

我们的闲鱼名字

小食品大王

概述

SAO提取过程遵循以下步骤:

  1. 清洗和预处理专利文本
  2. 将文本分割成句子
  3. 使用Stanford CoreNLP解析每个句子,获取:
    • 句法结构树(短语结构)
    • 依存句法分析
  4. 通过以下方式提取SAO结构:
    • 识别动词(动作)
    • 查找主语(动词左侧)
    • 查找宾语(动词右侧)
    • 处理介词短语和复杂结构

示例

对于句子:"The device has an intelligent card for storing a secret key"

算法提取出两个SAO结构:

  1. 主语: The device | 动作: has | 宾语: an intelligent card for storing a secret key
  2. 主语: an intelligent card | 动作: storing | 宾语: a secret key

环境要求

安装设置

  1. 从以下网址下载Stanford CoreNLP:https://stanfordnlp.github.io/CoreNLP/
  2. 将文件解压到一个目录(例如,`D:\python\stanford-corenlp-4.5.9`)
  3. 安装所需的Python包:
    pip install pandas nltk stanfordcorenlp

使用方法

测试单个句子

from patent_sao_extraction import test_sao_extraction

# Stanford CoreNLP的路径
corenlp_path = r'D:\python\stanford-corenlp-4.5.9'

# 使用示例句子进行测试
test_sentence = "The device has an intelligent card for storing a secret key"
test_results = test_sao_extraction(test_sentence, corenlp_path)

处理专利CSV文件

from patent_sao_extraction import process_patents

# Stanford CoreNLP的路径
corenlp_path = r'D:\python\stanford-corenlp-4.5.9'

# 处理CSV中的专利
results_df = process_patents('patents.csv', corenlp_path)

算法详情

基本SAO提取

  1. 解析句子获取句法树
  2. 为树节点添加父指针和位置信息
  3. 在树中查找动词节点
  4. 对于每个动词:
    • 向左搜索主语(最近的NP)
    • 向右搜索宾语(最近的NP)
    • 检查修饰动词的介词短语

复杂SAO提取

  1. 执行基本SAO提取
  2. 分析依存句法以查找特殊模式
  3. 识别嵌套动作(例如,"for storing")
  4. 为嵌套动作创建额外的SAO结构

CSV文件格式

输入CSV应具有以下列:

输出CSV将包含: