/* SaveRelations.java - stores a set of semantic relations
* (extracted from a parsed Wiktionary database) to a file.
*
* Copyright (c) 2009 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com>
* Distributed under GNU Public License.
*/
package wigraph;
import wikt.sql.TLang;
import wikt.sql.TPOS;
import wikt.sql.TRelation;
import wikipedia.sql.Connect;
import java.io.*;
import java.util.*;
/** A storing mechanism of a set of semantic relations
* (extracted from a parsed Wiktionary database) into a file.
*/
public class SaveRelations
{
/** Stores _map into a file defined by filename. */
public static void storeMapToLists(String filename, Map<String,List<String>> _map)
throws IOException, ClassNotFoundException {
ObjectOutputStream objstream = new ObjectOutputStream(new FileOutputStream(filename));
objstream.writeObject(_map);
objstream.close();
}
/** Stores _list into a file defined by filename. */
public static void storeList(String filename, List<String> _list)
throws IOException, ClassNotFoundException {
ObjectOutputStream objstream = new ObjectOutputStream(new FileOutputStream(filename));
objstream.writeObject(_list);
objstream.close();
}
public static void main(String[] args) {
Connect ruwikt_parsed_conn = new Connect();
ruwikt_parsed_conn.Open(Connect.RUWIKT_HOST,Connect.RUWIKT_PARSED_DB,Connect.RUWIKT_USER,Connect.RUWIKT_PASS);
// It is supposed that Wiktionary parsed database has been created
TLang.createFastMaps(ruwikt_parsed_conn); // once upon a time: use Wiktionary parsed db
TPOS.createFastMaps(ruwikt_parsed_conn); // once upon a time: use Wiktionary parsed db
// edge creation 1
// for each TRelation: get page<->wiki_text + type of relation
Map<String,List<String>> m_words = TRelation.getAllWordPairs(ruwikt_parsed_conn);
// prepare list of unique words - vertices
System.out.println(" (preparing list of unique words - vertices)...");
List<String> unique_words = new ArrayList();
unique_words.addAll(m_words.keySet());
for(List<String> list_s : m_words.values())
for(String s : list_s) {
if(!unique_words.contains(s))
unique_words.add(s);
}
String filename1 = "relation_pairs.txt";
String filename2 = "unique_words.txt";
try {
storeMapToLists(filename1, m_words);
storeList(filename2, unique_words);
} catch(IOException ex) {
System.err.println("IOException (wigraph SerializeRelationsToFile.java main()):: Serialization failed (" + filename1 + "), msg: " + ex.getMessage());
} catch(ClassNotFoundException ex) {
System.err.println("IOException (wigraph SerializeRelationsToFile.java main()):: Serialization failed (" + filename1 + "), msg: " + ex.getMessage());
}
// edge creation 2
// for each TMeaning (which have wiki_text with wikified words):
// get page<->wikified word, where type of relation = wiki
// todo
// ...
}
}