deezaster / germanphonetic Goto Github PK
View Code? Open in Web Editor NEWPhonetischer Algorithmus nach dem Kölner Verfahren für PHP, PL/SQL und Kotlin
Phonetischer Algorithmus nach dem Kölner Verfahren für PHP, PL/SQL und Kotlin
I don't speak German, but changeUnnecessary might be wrong
text = original.replace(regex1[i], regex2[i])
you see, you iterate over array regex1 and regex2, I think you mean to replace all characters in regex1 to with its counterpart in regex2, then the following code may produce the expected result:
text = text.replace(regex1[i], regex2[i])
x3m_soundex_ger.php, Zeile 185:
case 'c':
if ($x + 1 < $wordlen) {
// ...
} else {
--- $code .= "4";
+++ $code .= "8";
}
Defaultwert für 'c', wenn sonst keine Regel zutrifft, sollte laut Tabelle eigentlich 8 sein.
(in x3m_soundex_ger.sql ist es korrekt implementiert.)
Hallo Andy,
zum Kölner Verfahren habe ich einen Änderungsvorschlag, dann ist 'Müller-Lüdenscheid" gleich 'Müller Lüdenscheid': ein Leerzeichen mehr in ...Translate...
in_string := REGEXP_REPLACE(substr(Translate(strWord,'.,-; ',' '),1,4000), '([[:cntrl:]])|(^\t)', ' ');
Gruß
Christoph Gehrke
Dafür braucht es eine Datei composer.json
. Außerdem muss vermutlich das Packagist-Formular ausgefüllt werden.
Danke, das würde die Verwendung dieses Repositories vereinfachen.
Wenn man diese Funktion(en) in eigenem Code benutzen und ggf. in anderen (auch Open Source-) Projekten verwenden möchte, müsste man wissen, welche Lizenz hier gilt.
Ich hätte ja einfach die MIT License empfohlen:
The MIT License is a permissive license that is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and don’t hold you liable.
Hallo Andy,
es geht um Deine PHP-Implementierung vom Kölner-Phonetik-Algorithmus, die man auf GitHub (https://github.com/deezaster/germanphonetic/blob/master/x3m_soundex_ger.php) finden kann. Vielen Dank für Deine Arbeit, es hat mir sehr geholfen, meine Variante zu testen.
Mir scheint aber, dass es vielleicht in Deiner Funktion einen kleinen Fehler gibt: So, ich glaube, für 'scx' nach dem Algorithmuns sollte '8' kommen, stattdessen kommt aber '848'. Es kann daran liegen, dass es in Zeile 210 (switch für 'x' nach 'c') ein --- break --- fehlt.
Hallo Andy,
ich habe einen Fehler in der function x3m_soundex_ger.php gefunden.
Bei mir trat der seltene Fall auf, dass ich einen Text "mit Vitamin c" hate, auf den ich (Wort für Wort) die Funktion soundex_ger angewendet habe. Wenn ein Wort aber nur aus "c" besteht, dann stürzt die Funktion in Zeile 104 ab, da es bei einem 1-stelligen Wort kein $char[1] gibt...
Oliver Vogel
Sehr geehrter Herr Theiler,
Das Problem bei mehrzeiligen Inhalten ist, dass der Umbruch unterschiedlich behandelt werden muss.
Im Normalfall soll er wie ein Worttrennzeichen behandelt werden. Kommt allerdings ein Bindestrich vor dem Umbruch (getrenntes Wort), leitet er kein neues Wort ein.
Beispiel:
Select
soundex_ger_mw('Reit-
stall Müller') A1,
soundex_ger_mw('Reitstall Müller') A2,
soundex_ger_mw('Reitstall
Müller') A3
From
dual
Ergebnis:
A1: 7825 657 //OK
A2: 7825 657 //OK
A3: 7825 //Fehler
Freundliche Grüße
Markus Bauernschmitt
Sehr geehrter Herr Theiler,
bei der Suche nach einer Implementierung der Kölner Phonetik in Oracle bin auf Ihre Funktion im Netz gestoßen:
https://github.com/deezaster/germanphonetic
Eine Frage stellt sich mir allerdings bei der Analyse des Algorithmus: Die Vorgabe bei der Konvertierung lautet ja wie folgt:
Soweit ich sehe, werden aber in Ihrer Funktion SOUNDEX_GER zunächst alle Codes „0“ entfernt und anschließend die Mehrfach-Codes eliminiert, was dann ja bei bestimmten Ausgangswerten zu anderen Codierungen führt.
War diese gewählte Reihenfolge bei der Implementierung gewollt? Prinzipiell würden dadurch ja Silben „verschluckt“, sodass im Endeffekt bei einer Ähnlichkeitssuche Wörter als phonetisch identisch identifiziert werden, die aber laut der Silbenanzahl gar nicht phonetisch ähnlich klingen.
Ich würde mich freuen, wenn Sie mir kurz dazu antworten könnten.
Andreas Roskosch, Software-Entwickler
DATA-PLAN Computer Consulting GmbH
Reichenhainer Straße 34 - 36, 09126 Chemnitz
In the SQL Version some 'Diakritische Zeichen' like é are encoded, but a lot are missing like óoôîêâ
In Oracle are some functions to change these characters.
One solution coud be to use
utl_raw.cast_to_varchar2(nlssort(, 'nls_sort=binary_ai'))
With this the ß does also not need the replaced manually. The result would be:
word := regexp_replace(
utl_raw.cast_to_varchar2(nlssort(
replace(
translate(word, 'vwjy', 'ffii'),
'ph', 'f'),
'nls_sort=binary_ai')),
'[^a-z]', ' ');
Hallo,
erstmal vielen Dank für den Code, welcher wirklich gut funktioniert.
Beim testen des Codes sind uns mit Namen, welche sowohl auf c oder k enden können, Probleme aufgefallen.
Yannik -> 064
Yannic -> 068
Dominic -> 2668
Dominik -> 2664
Die Java-Implementierung unter http://lingulist.de/pyjs/demos/kph-demo.html weisst jeweils die gleichen Zahlenwerte als Ergebnis aus.
Haben Sie eine Idee woran das liegt bzw. welche Interpretation korrekt wäre?
Gruß
Jörg Lang
The SQL implementaton has in line 169
when substr(Word,intX-1,1) in ('c','k','x') then
The x should be replaced with q (see documentation)
when substr(Word,intX-1,1) in ('c','k','q') then
Hallo,
im PHP-Code werden zuerst die Nullen und dann die Dopplungen entfernt. Müsste es nicht andersrum sein? Z.B. Röhre ergibt mit dem Code "7", müsste doch aber "77" sein oder liege ich da falsch?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.