首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成数据文件中每一行的ngram,以便每个ngram创建一个新行?

如何生成数据文件中每一行的ngram,以便每个ngram创建一个新行?
EN

Stack Overflow用户
提问于 2022-08-09 20:28:15
回答 1查看 28关注 0票数 0

我尝试从数据的每一行生成ngram。它们应该用",“来分隔。

输入内容如下:

代码语言:javascript
复制
ID  Aufzeichnungen
1   vipr plus wurde gemacht, üz in behandlung
1   Röntgen der Hand, HCL aufgetragen
2   Hand wurde gemacht, Hand wurde betäubt

输出应该如下所示:

代码语言:javascript
复制
ID Aufzeichnungen                                   ngram         
  <dbl> <chr>                                       <chr>         
1     1  vipr plus wurde gemacht, üz in behandlung  vipr plus wurde gemacht
2     1  vipr plus wurde gemacht, üz in behandlung  üz in behandlung 
3     1  Röntgen der Hand, HCL aufgetragen          Röntgen der Hand
4     1  Röntgen der Hand, HCL aufgetragen          HCL aufgetragen
5     2  Hand wurde gemacht, Hand wurde betäubt     Hand wurde gemacht
6     2  Hand wurde gemacht, Hand wurde betäubt     Hand wurde betäubt

这样,每一个",“就可以将每一个符号分开,并与每一个名词形成一个新的列。

我的代码是:

代码语言:javascript
复制
PKV %>%
  group_by(ID) %>%
  group_modify(function(x, y) 
    tibble(Aufzeichnungen = x$Aufzeichnungen,
           ngram = ngram_asweka(x$Aufzeichnungen, sep = ",")))

有一个类似的问题,但我不知道为什么,但代码不起作用。“参数'str‘必须是单个字符串时发生错误。”

我不能用我的数据做一个大的行,因为它必须分开。

https://stackoverflow.com/questions/65225088/how-do-i-generate-ngrams-in-a-dataframe-so-that-each-ngram-creates-a-new-row

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-09 20:50:36

这看起来更像是“,上的拆分字符串”,而不是"make n-gram“。采取这一做法:

代码语言:javascript
复制
library(dplyr)
library(tidyr)
df %>%
  mutate(ngram = Aufzeichnungen) %>%
  separate_rows(ngram, sep = ", ", )
# # A tibble: 6 × 3
#      ID Aufzeichnungen                            ngram                  
#   <int> <chr>                                     <chr>                  
# 1     1 vipr plus wurde gemacht, üz in behandlung vipr plus wurde gemacht
# 2     1 vipr plus wurde gemacht, üz in behandlung üz in behandlung       
# 3     1 Röntgen der Hand, HCL aufgetragen         Röntgen der Hand       
# 4     1 Röntgen der Hand, HCL aufgetragen         HCL aufgetragen        
# 5     2 Hand wurde gemacht, Hand wurde betäubt    Hand wurde gemacht     
# 6     2 Hand wurde gemacht, Hand wurde betäubt    Hand wurde betäubt 

交替(和更多的字符串-分裂)

代码语言:javascript
复制
df %>%
  mutate(ngram = strsplit(Aufzeichnungen, ", ")) %>%
  unnest(ngram)
# for the same result

使用这些数据:

代码语言:javascript
复制
df = read.table(text = 'ID  Aufzeichnungen
1   "vipr plus wurde gemacht, üz in behandlung"
1   "Röntgen der Hand, HCL aufgetragen"
2   "Hand wurde gemacht, Hand wurde betäubt"', header = T)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73297739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档