art hasmap zur Sprachenerkennung

Status
Nicht offen für weitere Antworten.

H2SO3-

Bekanntes Mitglied
hi,

ich bin gerade dabei die Sprache von datumsformate anhand der darin enthaltenen Wörter zu erkennen. Also zb. Montag ist deutsch und monday ist english.
Leider gibt es natürlich auch noch worte die nicht so leicht zuzuordnen sind wie zb. "Jan"
Um das alles recht elegant und gut erweiterbar zu machen war die Überlegung das mit einer Hashmap zu machen die ich mir beim Programmaufruf zusammenbaue.

Also der tag (bzw. monat) dient als schlüssel und als wert bekomme ich zb. "de"

Soweit sogut. Was ich nun jedoch noch brauche, ist eine möglichkeit wie ich mit Wörtern umgehe, die in mehreren Sprachen vorkommen. Bei einer normalen Hashmap werden die alten values dann ja überschrieben.
Was ich also bräuchte währe eine art von hashmap welche zu einem key auch mehr als ein value speichern kann.
Angeblich soll es sowas direkt von Java geben. Allerdings konnte mir die Person auch nicht sagen, was das sein könnte.

Hat jemand eine Idee von euch?

Zurnot könnte ich mir natürlich ein Hilfkonstrukt bauen, indem ich als Value eine arraylyst nehme und in der meine "Sprachen" speichere, nur wenn es natürlich da schon was geben könnte währe es echt cool.

(Habe bereits hier eine ähnliche Frage im Forum gefunden jedoch ohne antwort. Hoffe das dies hier nun jemand ließt, der weiß wie es geht.)
 
G

Gast2

Gast
Moin,

das Ganze klingt grob nach Künstlicher Intelligenz ... also kannst Du die einzelnen Schlagwörter Gewichten und je nach Gewichtung kannst Du sagen Englisch, Deutsch, $WHATEVER ... Du kannst natürlich auch die Gewichte auf 100% festlegen wenn das Wort (z.B. Montag) auch nur in einer Sprache (Deutsch) vorkommt

hand, mogel
 

Landei

Top Contributor

H2SO3-

Bekanntes Mitglied
Danke erstmal für die antworten.

Denke der Bloom Filter hilft mir hier nicht weiter.

Von Künstlicher Intelligenz ist das hier nochmeilenweit entfernt. Um die SAche vielleicht etwas deutlicher zu machen hier ein Beispiel, wie ich es mir vorgestellt habe.

Code:
	private void testDatum()
	{
		HashMap<String, String> hm = new HashMap<String, String>();
		hm = fillEnglischHashMap(hm);
		hm = fillGermanHashMap(hm);
		hm.get("hallo"); // gleich NULL -> gut so, kommt nicht vor
		hm.get("montag"); // ergbeniss ist de das was ich will
		hm.get("jan"); // ergebniss gleich de. was nicht gut ist da das ergebniss en UND de sein soll. Jedoch wird das en von dem deutsch überschrieben
	}
	
	private HashMap<String, String> fillEnglischHashMap(HashMap<String, String> hm)
	{
		hm.put("monday", "en");
		hm.put("march", "en");
		hm.put("jan", "en");
		return hm;
	}
	private HashMap<String, String> fillGermanHashMap(HashMap<String, String> hm)
	{
		hm.put("montag", "de");
		hm.put("märz", "de");
		hm.put("jan", "de");
		return hm;
	}

brauche also etwas das mir anstatt des einen eintrages eine liste von einträgen liefern kann und halt alte einträge nicht überschreibt.
 

ARadauer

Top Contributor
ich würd einfach eine klasse machen, die eine hashmap hat und beim hinzufügen, den wert in eine arraylist einfügt, und diese list dann in die map einfügt...

so ungefähr...
Code:
class MultiHashMap<K, V> {   
   HashMap<K, ArrayList<V>> map = new HashMap<K, ArrayList<V>>();  
   public ArrayList<V> get(Object key) {
      return map.get(key);
   }   
   public void put(K key, V value) {
        ArrayList<V> list = get(key);
        if(list==null)
           list = new ArrayList<V>();
        list.add(value);
        map.put(key, list);
   }   
}
ungetestet...
ich danke mir, dass in den commons collections sowas drin ist, aber ich glaub ich hab mich getäuscht... http://commons.apache.org/collections/ hab auf die schnelle nix gefunden...



mhn jetzt wo ich deinen code sehe, bin ich mir sicher, dass du dir das selber schreiben musst.
 

H2SO3-

Bekanntes Mitglied
die idee ist mir auch gekommen, nur halt wenn es etwas direkt von Java geben würde, währe es halt um einiges schöner.
 

H2SO3-

Bekanntes Mitglied
mh, das mit dem google könnte hinhauen. Aber naja, so ganz befriedigt es mich glaube ich doch nicht. Aber was tut der Ossi? Was er nicht hat baut er selber :lol: :cool:

Code:
class MultipleHashMap {
	
	
	private HashMap<String, ArrayList<String>> multHashMap = new HashMap<String, ArrayList<String>>();

	void add(String key, String value)
	{
		ArrayList<String> arLiValue;
		arLiValue = this.multHashMap.get(key);
		if(arLiValue == null)
		{
			arLiValue = new ArrayList<String>();
		}
		arLiValue.add(value);
		this.multHashMap.put(key, arLiValue);
	}
	
	ArrayList<String> get(String key)
	{
		ArrayList<String> arLiValue;
		arLiValue = this.multHashMap.get(key);
		if(arLiValue == null)
		{
			arLiValue = new ArrayList<String>();
		}
		return arLiValue;
	}
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben