【发布时间】:2018-10-04 21:17:58
【问题描述】:
问题:
查找域名称的二元组、三元组和二元组分数。我有一个数据集,我想使用一些简单的分类来区分它们是否是 dga 域。所以我想从二元组、三元组和熵开始。
我尝试了什么:
from nltk import ngrams
sentence = 'some big sentence'
n = 2
sixgrams = ngrams(sentence.split(), n)
for grams in sixgrams:
print grams
这里我得到了一个句子的二元组。但我的意图不是这个。
我要转换
示例域:google.co.in
bigrams
[‘$g’, ‘go’, ‘oo’, ‘og’, ‘gl’, ‘le’, ‘e$’, ‘$c’, ‘co’, ‘o$’, ‘$i’, ‘in’, ‘n$’]
trigrams
[‘$go’, ‘goo’, ‘oog’, ‘ogl’, ‘gle’, ‘le$’, ‘$co’, ‘co$’, ‘$in’, ‘in$’]
然后计算bigrams_score。从中我可以使用它来预测模块和分析。
谁能帮我弄清楚如何解决这个问题?
【问题讨论】:
-
为什么它不适用于
sentence = 'google.co.in'? -
返回空集。我已经试过了。
-
您可能想在您的问题中添加它,对吗? (我必须承认我不知道它为什么会失败。)
-
我复制了你的代码,对于“这里我得到了一个句子的二元组”,我得到了
('some', 'big') ('big', 'sentence'),它比二元组更多的“双词”。也许ngrams(..)确实不 将您的输入分成两个字母的部分,而只分成两个word 部分。 (想一想,这可以解释为什么一个单词短语会默默地失败。)编辑哦等等,ngrams(..)上的类似问题也适用于 words,而不是字母。看来你使用了错误的包。
标签: python python-3.x machine-learning classification nltk