You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R语言NLP算法从PDF中提取VERB-Noun动词名词对

R语言提取PDF文本中动词-名词对实操方案

步骤1:提取PDF文本内容

使用pdftools包完成PDF文本读取,适合绝大多数非扫描版PDF文件:

  • 安装并加载包:
install.packages("pdftools")
library(pdftools)
  • 读取并合并PDF文本:
# 替换为你的本地PDF路径
raw_text <- pdf_text("target_file.pdf")
# 多页PDF合并为单个文本字符串
full_text <- paste(unlist(raw_text), collapse = " ")

你给出的示例文本可直接赋值测试:

sample_text <- "Represent clients in criminal and civil litigation and other legal proceedings, draw up legal documents, or manage or advise clients on legal transactions. May specialize in a single area or may practice broadly in many areas of law."

步骤2:文本词性与依存关系标注

使用udpipe包完成词性标注和依存句法分析,不需要额外配置外部环境:

  • 安装并加载包,下载对应语言预训练模型:
install.packages("udpipe")
library(udpipe)
# 处理英文文本下载英文模型,处理中文替换为language = "chinese"
model <- udpipe_download_model(language = "english")
udmodel <- udpipe_load_model(file = model$file_model)
  • 标注文本:
anno_result <- udpipe_annotate(udmodel, x = sample_text)
anno_df <- as.data.frame(anno_result)

步骤3:匹配动词-名词对

核心逻辑是筛选依存关系为宾语(obj)的条目,匹配对应的核心动词和名词宾语,自动过滤其他无关词性:

# 提取宾语对应的动词索引
obj_df <- subset(anno_df, dep_rel == "obj", select = c("head_token", "token"))
# 匹配动词的具体文本
verb_noun_pairs <- merge(
  obj_df,
  anno_df[, c("token_id", "token")],
  by.x = "head_token",
  by.y = "token_id",
  suffixes = c("_noun", "_verb")
)
# 整理去重得到最终配对结果
final_pairs <- unique(verb_noun_pairs[, c("token_verb", "token_noun")])
colnames(final_pairs) <- c("动词", "名词")

你给出的示例文本运行后得到的结果如下:

Represent - clients
draw - documents
manage - clients
advise - clients
specialize - area
practice - areas
如果需要匹配draw up这类短语动词,可额外筛选dep_rel == "compound:prt"的条目,把助词合并到对应动词上即可。

步骤4:词频统计(可选)

如果需要统计动词-名词对的出现频次,运行以下代码即可:

pair_freq <- as.data.frame(table(final_pairs$动词, final_pairs$名词))
pair_freq <- pair_freq[pair_freq$Freq > 0, ]

内容的提问来源于stack exchange,提问作者waka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:36:03