【问题标题】:How can I separate words in a corpus according to their POS?我怎样才能根据他们的POS分离语料库中的单词?
【发布时间】:2022-08-19 15:02:34
【问题描述】:

我正在探索一个文本语料库,我希望能够按照它们的语法类型来分隔单词,例如只考虑动词和名词。

我使用 spaCyr 对 spacy_parse() 函数进行词形还原,并在 Quanteda 参考 (https://quanteda.io/reference/as.tokens.html) 中看到有一个 as.tokens() 函数可以让我使用 spacy_parse() 的结果构建一个令牌对象。

as.tokens(
  x,
  concatenator = \"/\",
  include_pos = c(\"none\", \"pos\", \"tag\"),
  use_lemma = FALSE,
  ...
)

这样,我可以取回看起来像这样的东西(文本是法语):

etu1_repres_1 :
 [1] \"OK/PROPN\"        \",/PUNCT\"         \"déjà/ADV\"        \",/PUNCT\"         \"je/PRON\"         \"pense/VERB\"      \"que/SCONJ\"      
 [8] \"je/PRON\"         \"être/AUX\"        \"influencer/VERB\" \"de/ADP\"          \"par/ADP\"

假设我想分离标记并只保留 PRON 和 VERB 类型的标记。

Q1:如何将它们与其他令牌分开以仅保留:

etu1_repres_1 :
[1] \"je/PRON\"         \"pense/VERB\"  \"je/PRON\"        \"influencer/VERB\"

Q2:如何删除每个标记的 \"/PRON\" 或 \"/VERB\" 部分,以便能够构建仅包含引理的数据特征矩阵。

非常感谢帮助,

加布里埃尔

  • 您能否澄清一下“根据词性区分单词”是什么意思?所需的输出是什么样的?你能提供一个简单的例子吗?
  • 感谢您的帮助,@KenBenoit。根据您的评论,我编辑了我的问题。这样比较好理解吗?

标签: r spacy quanteda


【解决方案1】:
library("quanteda")
#> Package version: 3.2.1
#> Unicode version: 14.0
#> ICU version: 70.1
#> Parallel computing: 10 of 10 threads used.
#> See https://quanteda.io for tutorials and examples.

toks <- 
  as.tokens(list(etu1_repres_1 = c("OK/PROPN", ",/PUNCT", "déjà/ADV", ",/PUNCT", 
                                   "je/PRON", "pense/VERB", "que/SCONJ", "je/PRON", 
                                   "être/AUX", "influencer/VERB", "de/ADP", "par/ADP")))

# part 1
toks2 <- tokens_keep(toks, c("*/PRON", "*/VERB"))
toks2
#> Tokens consisting of 1 document.
#> etu1_repres_1 :
#> [1] "je/PRON"         "pense/VERB"      "je/PRON"         "influencer/VERB"

# part 2
toks3 <- tokens_split(toks2, "/") |>
  tokens_remove(c("PRON", "VERB"))
toks3
#> Tokens consisting of 1 document.
#> etu1_repres_1 :
#> [1] "je"         "pense"      "je"         "influencer"
dfm(toks3)
#> Document-feature matrix of: 1 document, 3 features (0.00% sparse) and 0 docvars.
#>                features
#> docs            je pense influencer
#>   etu1_repres_1  2     1          1

reprex package (v2.0.1) 于 2022 年 8 月 19 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2019-08-18
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多