我有3个单词列表。一个列表仅包含南非荷兰语中的单词。一个列表仅包含英语单词。第三个列表包含两种语言的单词。我试图自动确定第三个列表中的哪些单词属于前两个列表中的哪个。我想到的一种方法是查看最后出现的最长的子串。
因此,例如,英语中的单词将以...结尾,而南非语中的单词将以...结尾(例如字母与alfabeties)。
如何自动查找通常出现在第一个列表中但不在第二个列表中的后缀?我想用Python来做这件事。我在列表中使用Python列表。
答案 0 :(得分:1)
假设固定后缀大小suffix_size
和"通常"的阈值thresh
:
from collections import Counter, defaultdict
def suffix_counts(wordlist):
output = defaultdict(int)
counts = Counter(
word[-suffix_size:]
for word in wordlist
if len(word) >= suffix_size
)
output.update(counts)
return output
afrikaans_suffixes = suffix_counts(afrikaans_list)
english_suffixes = suffix_counts(english_list)
common_english_suffixes = [
suffix
for suffix, count in english_suffixes.iteritems()
if (float(count) / (count + afrikaans_suffixes[suffix])) > thresh
] # All suffixes which are found in English thresh percent of the time
话虽如此,这可能不是解决这个问题的最佳方法 - 您可能会发现使用类似nltk的方法为每种语言构建n-gram模型是值得的,然后使用这些模型对未知单词进行分类