Ich musste ein nah verwandtes Problem für ein Quellcode-Mining-Projekt lösen, und obwohl das Paket in Python und nicht Java geschrieben ist, schien es hier erwähnenswert, falls es irgendwie nützlich sein könnte.Das Paket ist Nostril (für "Nonsense String Evaluator") und es soll ermittelt werden, ob im Quellcode-Mining extrahierte Strings wahrscheinlich Klasse/Funktion/Variable/etc. Identifikatoren oder zufälliges Kauderwelsch. Nostril verwendet kein Wörterbuch, aber es enthält eine ziemlich große Tabelle von N-Gramm-Häufigkeiten, um seine probabilistische Bewertung von Textzeichenfolgen zu unterstützen.
Beispiel: Der folgende Code,
from nostril import nonsense
real_test = ['bunchofwords', 'getint', 'xywinlist', 'ioFlXFndrInfo',
'DMEcalPreshowerDigis', 'httpredaksikatakamiwordpresscom']
junk_test = ['faiwtlwexu', 'asfgtqwafazfyiur', 'zxcvbnmlkjhgfdsaqwerty']
for s in real_test + junk_test:
print('{}: {}'.format(s, 'nonsense' if nonsense(s) else 'real'))
die folgende Ausgabe erzeugen:
bunchofwords: real
getint: real
xywinlist: real
ioFlXFndrInfo: real
DMEcalPreshowerDigis: real
httpredaksikatakamiwordpresscom: real
faiwtlwexu: nonsense
asfgtqwafazfyiur: nonsense
zxcvbnmlkjhgfdsaqwerty: nonsense
Das Projekt auf GitHub ist und ich Beiträge willkommen. Wenn Sie wirklich eine Java-Implementierung benötigen, können wir vielleicht Nostril mit Python 2.7 kompatibel machen und Sie können versuchen, Jython zu verwenden, um es von Java auszuführen.
Sie müssen nicht wirklich ein Wörterbuch implementieren, Sie müssen nur eines verwenden. –
Erwarten Sie auch, Dinge wie die Goldmediallisten in 'foo1oksana0grishuk3evgeny1platov1' zu finden? –
Ich bin nur eine Methode, um eine Zeichenfolge zu bestimmen, ist Englisch Wort – ikel