当前位置:  开发笔记 > 编程语言 > 正文

以最明显的方式安排信件?

如何解决《以最明显的方式安排信件?》经验,为你挑选了1个好方法。

我有一些带有一些字符的字符串,我正在寻找这些字符的组织,以便它是最可能的.

例如,如果我有字母"ascrlyo",那么有些安排会比其他安排更加明显.以下可能获得"高分":

可怕的

如果以下可能获得低分:

oascrly yrlcsoa

我可以使用一个简单的算法吗?或者更好的是,Python功能实现了这一目标?

谢谢!



1> Colonel Pani..:

首先解决一个更简单的问题:一个给定的单词是否可以发音?

机器学习"监督学习"在这里可能是有效的.在字典单词和加扰单词的训练集上训练二进制分类器(假设加扰的单词都是不可发音的).对于功能,我建议计算双字母和三元组.我的理由是:'tns'和'srh'等不可发音的三字卦在词典中很少见,尽管每个字母都是常见的.

我们的想法是,经过训练的算法将学习将具有任何罕见三元组的单词分类为不可发音的单词,并且将仅具有共同三元组的单词分类为可发音的单词.


这是scikit-learn http://scikit-learn.org/的实现

import random
def scramble(s):
    return "".join(random.sample(s, len(s)))

words = [w.strip() for w in open('/usr/share/dict/words') if w == w.lower()]
scrambled = [scramble(w) for w in words]

X = words+scrambled
y = ['word']*len(words) + ['unpronounceable']*len(scrambled)

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)

from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

text_clf = Pipeline([
    ('vect', CountVectorizer(analyzer='char', ngram_range=(1, 3))),
    ('clf', MultinomialNB())
    ])

text_clf = text_clf.fit(X_train, y_train)
predicted = text_clf.predict(X_test)

from sklearn import metrics
print(metrics.classification_report(y_test, predicted))

它的准确率为92%.无论如何,鉴于可发性是主观的,这可能会得到它的好处.

                 precision    recall  f1-score   support

      scrambled       0.93      0.91      0.92     52409
           word       0.92      0.93      0.93     52934

    avg / total       0.92      0.92      0.92    105343

它同意你的例子:

>>> text_clf.predict("scaroly crasoly oascrly yrlcsoa".split())
['word', 'word', 'unpronounceable', 'unpronounceable']

对于好奇,这里有10个混乱的单词,它可以分类:

moro garapm ocenfir onerixoatteme arckinbo raetomoporyo bheral accrene cchmanie suroatipsheq

最后10个词典词被错误分类为不可启动的:

ilch tohubohu usnea halfpaced pyrostilpnite lynnhaven cruel enure moldproof piecemeal

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有