Hallo,
ich möchte aus Texten Wortpaare erkennen und herausschreiben. Also, wenn in einem Text steht "new york", dann soll dies auch als solches erkannt werden.
Bis jetzt habe ich folgende Idee.
Ich gehe durch einen Text hindurch und lese die Wort einzeln in eine TreeMap ein. Danach wird der text wieder eingelesen und jedes wort in der TreeMap wird mit den Worten des Textes verglichen. Wenn er eines findet, dann soll es zusammen mit dem nächsten Wort als "einen" String zusammennehmen und erneut in eine TreeMap einlesen.
Am Ende dann einfach alle "keys" auslesen, deren "values" größer ist als 2 oder 3.
Also im Prinzip, wenn in einem Text steht:" New York has a new opinion about ...", dann soll das Programm, wenn es "new" vergleicht "new york" und "new opinion" als einen String zusammenpacken.
So ist der Plan, aber ich habe Probleme, mit dem zweiten einlesen in die TreeMap, da ich nicht weiß, wie er es finden soll und dann wissen soll, dass er das nächste Wort mit dazu packen soll.
Der Code sieht bis jetzt so aus:
wenn jemand eine Idee hat, wäre ich dankbar ...
P.S.: Der oben beschriebene Weg fiel mir heute ein, aber vielleicht gibt es auch einen viel geeigneteren Weg, also, wenn jemand einen weiß ...
ich möchte aus Texten Wortpaare erkennen und herausschreiben. Also, wenn in einem Text steht "new york", dann soll dies auch als solches erkannt werden.
Bis jetzt habe ich folgende Idee.
Ich gehe durch einen Text hindurch und lese die Wort einzeln in eine TreeMap ein. Danach wird der text wieder eingelesen und jedes wort in der TreeMap wird mit den Worten des Textes verglichen. Wenn er eines findet, dann soll es zusammen mit dem nächsten Wort als "einen" String zusammennehmen und erneut in eine TreeMap einlesen.
Am Ende dann einfach alle "keys" auslesen, deren "values" größer ist als 2 oder 3.
Also im Prinzip, wenn in einem Text steht:" New York has a new opinion about ...", dann soll das Programm, wenn es "new" vergleicht "new york" und "new opinion" als einen String zusammenpacken.
So ist der Plan, aber ich habe Probleme, mit dem zweiten einlesen in die TreeMap, da ich nicht weiß, wie er es finden soll und dann wissen soll, dass er das nächste Wort mit dazu packen soll.
Der Code sieht bis jetzt so aus:
Code:
public class coll
{
public static void main(String [] args)
throws Exception
{
BufferedReader in = new BufferedReader(new FileReader("test.txt"));
BufferedWriter raus = new BufferedWriter(new FileWriter("Gesamt.txt"));
String rein;
String wort;
TreeMap zusammen = new TreeMap();
TreeMap word = new TreeMap();
while ((rein=in.readLine())!=null)
{
StringTokenizer st = new StringTokenizer(rein);
while (st.hasMoreTokens())
{
wort = st.nextToken();
word.put(wort, wort);
}
}
Set set = word.entrySet();
for(Iterator iter = set.iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry) iter.next();
wort = (String) entry.getKey();
{
while ((rein=in.readLine())!=null)
{
StringTokenizer st = new StringTokenizer(rein);
while (st.hasMoreTokens())
{
String neu;
neu = st.nextToken();
if (wort.matches(neu)) //das hier istr natürlich mehr oder weniger unsinn, aber ich weiß nicht, wie anders...
//hier muss ich die Wort zusammenlegen und erneut einlesen, aber wie...?
{
raus.write(wort);
raus.flush();
raus.newLine();
}
}
}
}
}
}
}
wenn jemand eine Idee hat, wäre ich dankbar ...
P.S.: Der oben beschriebene Weg fiel mir heute ein, aber vielleicht gibt es auch einen viel geeigneteren Weg, also, wenn jemand einen weiß ...