我正在尝试使用 RTextTools 附带的德语词干分析器,但我得到的结果非常不合适。
说,我有以下向量:
v <- c("groß", "größer", "am", "größten", "ähnlicher")
使用
library(RTextTools)
wordStem(v, "german")
我得到
[1] "groß" "größer" "am" "größten" "ähnlich"
我错过了什么??
最佳答案
Snowball 中的算法
/*
Extra rule for -nisse ending added 11 Dec 2009
*/
routines (
prelude postlude
mark_regions
R1 R2
standard_suffix
)
externals ( stem )
integers ( p1 p2 x )
groupings ( v s_ending st_ending )
stringescapes {}
/* special characters (in ISO Latin I) */
stringdef a" hex 'E4'
stringdef o" hex 'F6'
stringdef u" hex 'FC'
stringdef ss hex 'DF'
......
看起来它被翻译回“DF”“ß”
通过以下 e 表示变音符号
德语字母 ä、ö 和 ü 偶尔分别用 ae、oe 和 ue 表示。考虑到这一点,这里的词干分析器是主要德国词干分析器的变体。
主要的德国词干分析器从规则开始,
First, replace ß by ss, and put u and y between vowels into upper case.
这被规则取代,
Put u and y between vowels into upper case, and then do the following mappings,
(a) replace ß with ss, **"MAYBE WRONG ORDER"**
(a) replace ae with ä,
(a) replace oe with ö,
(a) replace ue with ü unless preceded by q.
So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found.