有没有办法评估一个字符串,看看它是否用英语评估一个单词?这就是我要找的东西
is.word("hello world")
[1] FALSE
is.word(c("hello", "world")
[1] TRUE TRUE
由于没有is.word
逻辑功能,上述功能无效。
答案 0 :(得分:9)
正如评论所指出的那样,你需要一本英语字典来匹配。 #!/bin/bash
type="hs1.8xlarge"
curl -s -L -k https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json | jq --arg type "$type" '.products[] | select(.attributes.instanceType | endswith($type)).sku'
包中的gradyAugmented
对象就是这样一个字典:
包含Grady Ward英文单词矢量的数据集 增加了'DICTIONARY',Mark Kantrowitz的名单,其他 专有名词和收缩。
qdapDictionary
答案 1 :(得分:1)
不,R 中没有这样的功能。
虽然您可以轻松实施天真的方法,但在10个案例中有9个可以使用。
首先,您需要一个与您的数据匹配的“单词”字典。其中一个字典由GNU人员编译,并在SCOWL (And Friends)网站的开源许可证下发布。
下载数据文件并解压缩。单词分散在多个文件中,后缀表示区域,类别和共性(或日常英语用户不熟悉单词的概率)。使用list.files()
函数和pattern
参数或grepl()
函数,您可以选择您关注的确切字典集。
# set path to extracted package
words.dir <- '/tmp/scowl-2015.08.24/final/'
words <- unlist(sapply(list.files(words.dir, pattern='[1-6][05]$', full.names=TRUE), readLines, USE.NAMES=FALSE))
# For some reason most frequent words are not in "final" dir…
words <- c(words, readLines(paste0(words.dir, '../r/special/frequent')))
length(words)
# [1] 143681
然后验证单词是否为英语就像检查它是否存在于已知单词的向量中一样简单。好消息是你可以免费获得矢量化。
c("knight", "stack", "selfie", "l8er", "googling", "echinuliform") %in% words
# [1] TRUE TRUE TRUE FALSE TRUE FALSE
真正的问题是“什么算作字?”。 “谷歌搜索”算作单词吗?它现在常用,但15年前并非如此。那么“echinuliform”呢?我想很多母语人士都不会理解它。
讨论这个问题超出了本网站的范围,但语言有一定的随意性,目前还没有计算机程序能够应对。