Wie die Sprache (Englisch, Chinesisch ...) eines bestimmten Stachel (Tabellenspaltenwert) in Oracle (mehrsprachige Umgebung) zu bestimmen?Wie kann man die Sprache (Englisch, Chinesisch ...) einer gegebenen Zeichenkette in Oracle bestimmen?
Antwort
Meinst du die Sprache als "welche Sprache gehört dieses Wort" oder wie in "Zeichencodierung"?
Für den ersten Fall denke ich, es gibt nur Heuristiken, ich bin mir nicht sicher, ob Oracle Database Schiffe. Oracle Ultra Search verfügt über eine statistische Spracherkennung. Im zweiten Fall: Die Kodierung ist immer die Systemkodierung der Datenbank (aber Sie sollten sie eigentlich nicht verwenden, da sie beim Aufruf in Ihre lokale Darstellung konvertiert wird (abhängig natürlich von Ihrem Client-Framework und Treiber)).
Vielen Dank für Ihre Antwort. Ich meinte ersten Fall ("welcher Sprache dieses Wort gehört"). Ich habe Google Translate (https://translate.google.com/) ausprobiert und scheint die Sprache korrekt identifizieren zu können. Ich frage mich, ob wir irgendwelche eingebauten Apis in Orakel für Spracherkennung oder Zeichensatz haben. – user3614051
es soll eine Bibliothek wie Language Dectection for Java und binden sie es mit Ihrem PL/SQL zu verwenden.
möglich sein, wahrscheinlich use SQL to do naive Bayesian filtering und Verwendung Sprachprofilen abgeleitet zB von Wikipedia (they are neatly packed here) effizienter wird es sein.
Die Das sind nur Hinweise, keine vollständige Lösung, wie für das Kopfgeld gefordert, sondern sollten Kopfgeldjägern helfen.
könnte eine mögliche Lösung sein:
1) in der Sprache einige dictionary.txt Dateien halten Sie erwarten
2), wenn die Eingabezeichenfolge in Frage Parsen, so etwas wie ein Scanner verwendet jeden lesen Wort und suchen Sie es im am meisten erwarteten Wörterbuch, bis eine angemessene Anzahl von Übereinstimmungen oder Fehlschlägen es ermöglicht, dass die Zeichenfolge nicht aus dieser Sprache stammt (möglicherweise ein bestimmter Prozentsatz).
3) Überprüfen Sie das nächstwahrscheinliche Wörterbuch usw., bis Sie die Antwort gefunden haben oder nicht ermitteln können.
Haben Sie zum Beispiel englishDict.txt, spanishDict.txt und frenchDict.txt, und überprüfen Sie vielleicht, ob die ersten 100 Wörter in der englischenDict.txt zuerst existieren, und wenn Sie eine vernünftige Zahl finden (sagen wir 70 aus 100), kann man vernünftigerweise davon ausgehen, dass es auf Englisch ist; Überprüfen Sie andernfalls die nächste Datei. Oder Sie können auch von jedem Wörterbuch lesen und das Ergebnis mit den meisten Übereinstimmungen auswählen.
Alternativ könnten Sie zuerst nach häufig verwendeten Sprachwörtern suchen, wie Artikel, Pronomen und allgemeine Verben. Ich habe das Gefühl, dass Sie unabhängig von der Lösung eine Reihe von Suchen und Vergleichen durchführen müssen, um die Antwort zu finden.
Oracle Globalization Development Kit kann Sprachen erkennen.
Das GDK ist in Oracle enthalten, wird jedoch nicht standardmäßig in der Datenbank installiert. die .jar-Dateien in die Datenbank finden Sie das jlib Verzeichnis in der Oracle nach Hause zu laden und dieses Betriebssystem Befehl ausführen:
loadjava -u [email protected] orai18n.jar orai18n-collation.jar orai18n-lcsd.jar orai18n-mapping.jar orai18n-net.jar orai18n-servlet.jar orai18n-tools.jar orai18n-translation.jar orai18n-utility.jar
Einige zusätzliche Java-Privilegien benötigt werden, auch wenn Ihre Benutzer DBA hat. Führen Sie diesen Befehl aus und stellen Sie die Verbindung wieder her:
Erstellen Sie eine Java-Klasse für die Erkennung.Unten ist ein sehr einfaches Beispiel, das die beste Vermutung für einen String zurückgibt:
create or replace and compile java source named "Language_Detector"
as
import oracle.i18n.lcsd.*;
public class Language_Detector
{
public static String detect(String some_string)
{
LCSDetector detector = new LCSDetector();
detector.detect(some_string);
LCSDResultSet detector_results = detector.getResult();
return detector_results.getORALanguage();
}
}
/
Wickeln Sie die Java-Klasse in einer Funktion PL/SQL:
create or replace function detect_language(some_string varchar2)
return varchar2
as language java
name 'Language_Detector.detect(java.lang.String) return java.lang.String';
/
eine Beispieltabelle erstellen:
create table unknown_language(id number, text varchar2(4000));
insert into unknown_language
select 1, 'The quick brown fox jumps over the lazy dog' from dual union all
select 2, 'El zorro marrón rápido salta sobre el perro perezoso' from dual union all
select 3, '敏捷的棕色狐狸跳过懒狗' from dual union all
select 4, 'Der schnelle braune Fuchs springt über den faulen Hund' from dual union all
select 5, 'Быстрая коричневая лиса прыгает через ленивую собаку' from dual;
Jetzt ist die Funktion in einfachen SELECT
Anweisungen verfügbar. In diesem trivialen Beispiel funktioniert die Spracherkennung einwandfrei.
select id, detect_language(text) language
from unknown_language
order by id;
ID LANGUAGE
-- --------
1 ENGLISH
2 SPANISH
3 SIMPLIFIED CHINESE
4 GERMAN
5 RUSSIAN
- 1. Wie kann man den Ursprung einer gegebenen Maven-Abhängigkeit bestimmen?
- 2. Kopieren einer Teilzeichenkette aus einer Zeichenkette gegebenen Endindex in Zeichenkette
- 3. So senden Sie SMS in einer anderen Sprache als Englisch
- 4. Wie Wikipedia die Infobox einer anderen Sprache als Englisch darstellt?
- 5. Finde alle Subsequenzen einer gegebenen Zeichenkette
- 6. SourceTree 2.2.3 - Englisch Sprache
- 7. Split String Chinesisch oder Japanisch oder Englisch in Wort
- 8. Swing Applet-Menüelemente in Englisch und Chinesisch internationalisieren - Beispiele?
- 9. Wie wird die statistische Zeichenkette in einer Spalte mit R-Sprache angezeigt?
- 10. Wie überprüft man, ob eine Zeichenkette eine Liste enthält, wenn Zeichen, die nicht in Englisch sind
- 11. QLocale :: Sprache - traditionelles und vereinfachtes Chinesisch?
- 12. Der beste Weg, um die Sprache einer gegebenen Zeichenfolge zurückzugeben
- 13. wie man einen gegebenen Buchstaben in einer Zeichenkette von Klein- in Großbuchstaben in Ruby umwandelt
- 14. highlight.js für lateinische sprache englisch
- 15. Wie kann man die Breite einer mehrzeiligen Zeichenfolge zuverlässig bestimmen?
- 16. Wie erstellt man eine PHP-Anwendung mit mehreren Sprachen (Englisch, Französisch, Chinesisch usw.)
- 17. Wie eine Zeichenfolge zu bestimmen ist Englisch oder Persisch?
- 18. Wie kann man die Ergebnisse einer Ansicht in Oracle aktualisieren?
- 19. Google Maps PlaceDetails in einer anderen Sprache als Englisch
- 20. Wie schneidet man die letzten zwei Buchstaben in einer Zeichenkette ab und konvertiert sie in Oracle?
- 21. Wie kann man den Wert einer Variablen ändern, wenn man die lokale Sprache des Telefons kennt?
- 22. Kann nicht Englisch UK Sprache in itunesconnect löschen
- 23. Wie erhält man Elemente einer bestimmten Klasse, beginnend mit einer gegebenen Zeichenkette?
- 24. Wie überprüft man, ob eine gegebene Zeichenkette Teil einer gegebenen Enum in Java ist?
- 25. Wie konvertiert man Englisch nach Cron?
- 26. Die Sprache der Fehlermeldungen des PostgresSQL-Servers in Englisch ändern
- 27. wie man die Layout-Ausrichtung nicht ändern, wenn die Sprache von Englisch auf Arabisch Android entwickelt
- 28. Wie löscht man Zeichen in einer Zeichenkette?
- 29. Get Englisch Nachricht Ausnahme statt lokaler Sprache
- 30. Wie überprüft man den Zeichensatz von Zeichenkette in Java?
nicht diese Fragen haben geholfen http://stackoverflow.com/questions/3227524/how-to-detect-language-of-user-entered-text http://stackoverflow.com/questions/7443987/autodetect-sprache-von-einem-text-in-java-android – lakshman
Es gibt viele gute * Vorschläge * aber das Kopfgeld war für guten * Code *. Wenn jemand jemals ein funktionierendes Beispiel in PL/SQL zusammenstellen kann, gebe ich dir 200 Punkte Kopfgeld. –