Daha basit bir problemi çözerek başlayın: belirli bir sözcük telaffuz edilebilir mi?
Makine 'denetimli öğrenmeyi' öğrenme burada etkili olabilir. Sözlük kelimelerin ve şifreli kelimelerin bir antrenman kümesinde ikili bir sınıflandırıcıyı eğitin (şifrelenmiş sözcüklerin tümünün önkoşulsuz olduğunu varsayın). Özellikler için, bigram ve trigram saymayı öneririm. Benim gerekçem: 'tns' ve 'srh' gibi unpronounceable trigramlar, tek tek harflerin her biri ortak olsa bile, sözlük sözcüklerinde nadirdir.
fikri eğitimli algoritma pronounceable olarak tek ortak trigrams ile telafuz gibi herhangi nadir trigrams sözcükleri ve kelimeleri sınıflandırmak öğrenecektir olmasıdır.
İşte 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))
It puanları% 92 doğruluk-öğrenme scikit ile bir uygulama var. Önem verilebilirlik göz önüne alındığında, yine de öznel olan, bu kadar iyi olabilir.
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
Bu sizin örneklerle kabul eder: Merak edenler için
>>> text_clf.predict("scaroly crasoly oascrly yrlcsoa".split())
['word', 'word', 'unpronounceable', 'unpronounceable']
, burada 10 o pronounceable sınıflandırır kelimeleri şifreli olup:
- moro garapm ocenfir onerixoatteme arckinbo raetomoporyo bheral accrene cchmanie suroatipsheq
012 unpronouncable olarak yanlışVe nihayet 10 Sözlük kelimeler:
- ilch tohubohu Usnea halfpaced pyrostilpnite Lynnhaven acımasız alıştırmak moldproof parça parça
Bunu yapmak için sağlam bir İngilizce fonetik bilgisine ihtiyacınız olacak. Bu gerçekten basit bir sorun değil. – kindall
@kindall Öyle düşünmüştüm, ama birisinin zaten onu zarif bir şekilde çözdüğünü umuyoruz ... –
Bu yardımcı olabileceği gibi görünüyor: http://stackoverflow.com/a/6298193/4996248. Bir Python gibberish dedektörünü tanımlar. En küçük gibberish skoru olan permütasyonu bulun. –