r - “sentimentr”包如何将一个段落或句子分成1个以上的句子?
问题描述
我正在尝试使用“sentimentr”包在 r 中运行情绪分析。我输入了一个评论列表,在输出中得到了 element_id、sentence_id、word_count、sentiment。带有长短语的评论正在转换为单个句子。我想知道基于哪个包的逻辑?
我的评论有 4 个主要类别——食物、氛围、价格和服务。而且我还为这些主题设置了二元组,我正在尝试根据主题拆分句子
install.packages("sentimentr")
library(sentimentr)
data <- read.csv("Comments.csv")
data_new <- as.matrix(data)
scores <- sentiment(data_new)
#scores
write.csv(scores,"results.csv")
例如 - “我们有一个大约 25 人的大型聚会,所以有些问题是可以理解的。但服务员似乎完全不知所措。有很多问题我什至无法开始解释。简单地说食物需要一个多小时才能送达,它到的时候煮过头了,我儿子吃了一块烧焦的牛排,经理来到餐桌上说他们现在没有牛排了,我可以继续吃下去。我们非常失望”分成5句话
1)我们有一个大约 25 人的大型聚会,所以有些问题是可以理解的 2)但是服务器似乎完全不堪重负。3)有太多的问题我什至无法解释。4)简单地说食物需要一个多小时才能送达,到达时它已经煮过头了,我儿子有一块烧焦的牛排,经理来到餐桌上说他们现在没有牛排了,我可以继续下去。5)我们非常失望
我想知道拆分背后是否有任何语义逻辑,或者它只是基于句号?
解决方案
它使用 textshape::split_sentence(),见https://github.com/trinker/sentimentr/blob/e70f218602b7ba0a3f9226fb0781e9dae28ae3bf/R/get_sentences.R#L32
搜索了一下发现逻辑在这里:
即是的,它正在拆分?.!
,但随后它使用一堆正则表达式来查找异常,例如“No.7”和“Philip K. Dick”。
推荐阅读
- node.js - 替换字符串在 NodeJs 中的 __filename 中包含正斜杠
- rust - 按位还是匹配?
- javascript - 两个对象数组正在合并,但它们没有排序 - D3
- javascript - 将从后端生成的数据映射到角度 4 中的复选框
- python - 在熊猫中平均每分钟
- javascript - 回调函数 Web3 的输入参数
- android - adb 列表中的幽灵 id
- azure-sdk-python - Azure Notebooks 的私有 Python 包存储库?
- java - hibernate 是重用存储在内存中的对象还是每次都创建新对象?
- python - 如何将列中最后一次更改的索引分配给每一行?