R 如何找到与特定单词分组的主题和短语(动词/形容词)?

R 如何找到与特定单词分组的主题和短语(动词/形容词)?,r,text,nlp,R,Text,Nlp,我有一个大而整洁的数据集,其中列包含文本响应(即,在拨款申请中)和行,作为申请拨款的单个组织。我试图找到用一个特定单词(例如,“资助者”/“资助”)分组的主题和短语。更具体地说,哪些形容词和动词与这些标记一起分组 比如说 text <- "This funding would help us create a new website and hire talented people." text这是一个需要开始探索的巨大领域 我强烈建议大家看看tidytextmining的书籍和软件包,

我有一个大而整洁的数据集,其中列包含文本响应(即,在拨款申请中)和行,作为申请拨款的单个组织。我试图找到用一个特定单词(例如,“资助者”/“资助”)分组的主题和短语。更具体地说,哪些形容词和动词与这些标记一起分组

比如说

text <- "This funding would help us create a new website and hire talented people."

text这是一个需要开始探索的巨大领域

我强烈建议大家看看tidytextmining的书籍和软件包,以及作者的个人博客(,)那里有大量伟大的工作可以让你开始,它为NLP新手写得非常好

widyr和udpipe库对于您正在寻找的内容也非常有用

这里有几个例子: 使用widyr,我们可以查看一个词(比如融资)和所有其他与之有一定关系的词之间的成对pmi。有关PMI的信息,请查看:

库(tidytext)
图书馆(tidyverse)
文本%
成对pmi(字,id)%>%
筛选(项目1=='funding')%>%
顶部(5,wt=pmi)%>%
安排(描述(pmi))
项目1项目2 pmi
1为此提供的资金-0.0205
2资金将-0.0205
3资助帮助-0.0205
4资助美国-0.0205
所以要介绍形容词和短语,你可以按照博斯基的建议看一下udpipe。 我也将复制上面的内容来计算PMI,因为这是一个非常直观和快速的计算指标

library(udpipe)
english <- udpipe_download_model(language = "english")
ud_english <- udpipe_load_model(english$file_model)

tagged <- udpipe_annotate(ud_english, x = texts$text)
tagged_df <- as.data.frame(tagged)


tagged_df %>%
        filter(upos == 'ADJ' | 
                       token == 'funding') %>%
        pairwise_pmi(token, doc_id) %>%
        filter(item1 == 'funding')


  item1   item2      pmi
  <chr>   <chr>    <dbl>
1 funding new      0.170
2 funding talented 0.170

库(udpipe)

我正在使用
corpus
udpipe
这不是一个适合堆栈溢出的特定编程问题。如果你需要一般的数据分析建议,你应该问问像或这样的地方。哇,谢谢!我同意,这是一个相当大的领域,所以我非常感谢您提供的链接和示例。我使用tidytext标记单词并进行简单分析,包括情绪分析、单词共现等。不幸的是,我甚至不知道从哪里开始探索这个话题。所以再次感谢你的指导。我还安装了spaCy,我将尝试将其与udpipe一起使用。但在udpipe软件包中,似乎出现了一些问题。我安装并加载包。创建
English
变量。但是当我运行
ud\u英语时,上面有一个错误,很抱歉。谢谢我在文档中也看到了同样的情况,但您的示例现在起作用了。
library(udpipe)
english <- udpipe_download_model(language = "english")
ud_english <- udpipe_load_model(english$file_model)

tagged <- udpipe_annotate(ud_english, x = texts$text)
tagged_df <- as.data.frame(tagged)


tagged_df %>%
        filter(upos == 'ADJ' | 
                       token == 'funding') %>%
        pairwise_pmi(token, doc_id) %>%
        filter(item1 == 'funding')


  item1   item2      pmi
  <chr>   <chr>    <dbl>
1 funding new      0.170
2 funding talented 0.170