Coder Social home page Coder Social logo

rdoeffinger / dictionarypc Goto Github PK

View Code? Open in Web Editor NEW
16.0 16.0 8.0 22.56 MB

Java code to generate dictionaries for QuickDic Android app (see Dictionary repo). Fork of project that used to be hosted at code.google.com/p/quickdic-dictionary

License: Apache License 2.0

Shell 4.78% Java 95.04% HTML 0.08% Batchfile 0.11%

dictionarypc's People

Contributors

christophlingg avatar rdoeffinger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

dictionarypc's Issues

genv6.sh: java.lang.IllegalArgumentException: newLimit < 0: (-8 < 0) when building EN.quickdic

I’m trying to rebuild the dictionaries. Unfortunately, I have a Tolino and they still can’t use the v007 format, so I used "genv6.sh". It works correctly through all EN-XX dictionaries but when finally trying to build EN.quickdic (v006), I get an error:

Exception in thread "main" java.io.IOException: RuntimeException loading dictionary
	at com.hughes.android.dictionary.engine.Dictionary.<init>(Dictionary.java:115)
	at com.hughes.android.dictionary.engine.ConvertToV6.main(ConvertToV6.java:50)
	at com.hughes.android.dictionary.engine.Runner.main(Runner.java:31)
Caused by: java.lang.IllegalArgumentException: newLimit < 0: (-8 < 0)
	at java.base/java.nio.Buffer.createLimitException(Buffer.java:372)
	at java.base/java.nio.Buffer.limit(Buffer.java:346)
	at java.base/java.nio.ByteBuffer.limit(ByteBuffer.java:1107)
	at java.base/java.nio.MappedByteBuffer.limit(MappedByteBuffer.java:235)
	at java.base/java.nio.MappedByteBuffer.limit(MappedByteBuffer.java:67)
	at com.hughes.util.DataInputBuffer.slice(DataInputBuffer.java:49)
	at com.hughes.util.raf.RAFList.<init>(RAFList.java:81)
	at com.hughes.util.raf.RAFList.create(RAFList.java:164)
	at com.hughes.android.dictionary.engine.Dictionary.<init>(Dictionary.java:112)
	... 2 more

This happens:

  • with both my compiled version and using your binary Linux version "DictionaryPC"
  • on both a 8GB RAM Linux Mint 20.2 and a 32GB RAM Ubuntu Studio 14.04 machine

Looking through the v007 .quickdic outputs, the EN.quickdic is by far the largest, it has 155,5MB.

Any ideas/help?

Superscript arabic numerals → Unicode, why not subscript arabic numerals, too?

In

private static String replaceSuperscript(String in) {
Matcher matcher;
while ((matcher = SUPERSCRIPT.matcher(in)).find()) {
String replace = "";
String orig = matcher.group();
for (int i = 5; i < orig.length() - 6; i++)
{
char c = 0;
switch (orig.charAt(i)) {
case '0': c = '\u2070'; break;
case '1': c = '\u00b9'; break;
case '2': c = '\u00b2'; break;
case '3': c = '\u00b3'; break;
case '4': c = '\u2074'; break;
case '5': c = '\u2075'; break;
case '6': c = '\u2076'; break;
case '7': c = '\u2077'; break;
case '8': c = '\u2078'; break;
case '9': c = '\u2079'; break;
}
if (c == 0) throw new RuntimeException();
replace += c;
}
in = matcher.replaceFirst(replace);
}
return in;
}
you replace superscript arabic numerals against their Unicode equivalents, why not subscript numerals, too? (Unicode range U+2080..U+2089)

This might help with line spacing issues (except if it were for footnotes/endnotes only).

WiktionarySplitter ArrayIndexOutOfBoundsException

Following Dictionary instructions, when running WiktionarySplitter.sh
i get a ArrayIndexOutOfBoundsException.

Here is the log:

Exception during parse, lastPageTitle=atslips, titleBuilder= of file data/inputs/enwiktionary-pages-articles.xml
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 2048 out of bounds for length 2048
at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.scanContent(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanContent(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at java.xml/javax.xml.parsers.SAXParser.parse(SAXParser.java:197)
at com.hughes.android.dictionary.engine.WiktionarySplitter.go(WiktionarySplitter.java:105)
at com.hughes.android.dictionary.engine.WiktionarySplitter.main(WiktionarySplitter.java:60)

Do you know any probable cause?

K;V to dctionary file

Is there already a piece of code which allow to convert a key;value text file into a dictionary file ?

How to manually generate a single dict from a tab-separated file?

I’m at a loss. I try to generate a single DE dictionary from a cleaned-up, tab-separated DE Wiktionary download.

The source files (I created a one-entry test) look like this:

Aal	<i>Substantiv, m</i><i>, Aal, Pl. Aa·le</i><br><i>IPA:</i> [aːl]<br><b>Bedeutungen:</b><br>1. Zoologie: schlangenförmiger Süßwasser- und Meerwasserfisch aus der Ordnung der Aalartigen (Anguilliformes)<br>2. umgangssprachlich, und in Zusammensetzungen: Fisch oder Wassertier von länglicher Gestalt<br>3. Seefahrt, von U-Boot-Fahrern verwendete Bezeichnung für: Torpedo<br>4. Soldatensprache: neu eingezogener, unvereidigter Soldat, Soldat ohne Dienstgrad<br>5. junge Kalmuspflanze<br><b>Synonyme:</b><br>3. Torpedo<br>4. Brenner, Rotarsch, Sprutz, Zecke<br><b>Beispiele:</b><br>1. Er hatte einen sehr großen Aal gefangen.<br>1. Auf der Silberplatte lagen geräucherter Aal und Graved Lachs.<br>2. Meinst du, Freund der Tiere, man könnte Aal dazu sagen?<br>3. „Als mir der Torpedo endlich klar gemeldet wurde, gingen wir auf Gefechtskurs und nach Erreichen der Schussposition gab ich den Befehl ‚Torpedo los!‘ Der Aal verließ vorbildlich das Rohr, wurde dabei illegal vom I. Wachoffizier fotografiert und tauchte elegant ins Wasser.“ <br>4. Da zeigten es aber die Altgedienten den Aalen.<br>5. Zu jungen Kalmuspflanzen sagte Ehrenfried immer Aal und Herta ärgerte das.<br><br><i>Substantiv, mf, Nachname</i><i>, Aal, Pl. Aals</i><br><i>IPA:</i> [aːl]<br><b>Bedeutungen:</b><br>1. unterdurchschnittlich häufig auftretender, deutscher und niederländischer Nachname, Familienname häufigstes Vorkommen in Deutschland im Kreis Kleve in Nordrhein-Westfalen); auch mit Namenzusatz de<br><b>Beispiele:</b><br>1. Herr Aal heiratete Frau Müller im Mai. Nun heißt er Aal und sie Müller-Aal.<br>1. Heute sind wir bei Aals zu Besuch.<br>1. „Aal?! Vortreten!“<br>1. Der Aal ist's gewesen und die Aal hat's verpetzt.<br>1. Frau Aal ist ein Genie im Verkauf.<br>1. Herr Aal wollte uns kein Interview geben.<br>1. Die Aals kommen heute von Wangerooge.<br>1. Der Aal trägt nie die Schals, die die Aal ihm strickt.<br>1. Das kann ich dir aber sagen: „Wenn die Frau Aal kommt, geht der Herr Aal.“<br>1. Aal kommt und geht.<br>1. Aals kamen, sahen und siegten.<br>

(There is a TAB after the initial "Aal". All other tab characters inside the content were removed.)

Since there is not much documentation, I tried the following command (on Linux):

./run.sh --lang1=DE --lang1Stoplist=data/inputs/stoplists/de.txt --dictOut=data/outputs/DE.quickdic --dictInfo="Wiktionary-based DE dictionary" --input1=data/inputs/MCH-DE-DE-test.txt --input1Name=dewikitionary --input1Charset=UTF8 --input1Format=tab_separated

(taking over the spelling error "dewikitionary")

But this gives an error:

Running with arguments:
--lang1=DE
--lang1Stoplist=data/inputs/stoplists/de.txt
--dictOut=data/outputs/DE.quickdic
--dictInfo=Wiktionary-based DE dictionary
--input1=data/inputs/MCH-DE-DE-test.txt
--input1Name=dewikitionary
--input1Charset=UTF8
--input1Format=tab_separated
lang1=de
lang2=null
normalizerRules1=:: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; 
normalizerRules2=null
dictInfo=Wiktionary-based DE dictionary
dictOut=data/outputs/DE.quickdic
Processing: data/inputs/MCH-DE-DE-test.txt

Dec 11, 2021 1:06:15 AM com.hughes.android.dictionary.parser.DictFileParser parse
INFO: count=0, line=Aal	<i>Substantiv, m</i><i>, Aal, Pl. Aa·le</i><br><i>IPA:</i> [aːl]<br><b>Bedeutungen:</b><br>1. Zoologie: schlangenförmiger Süßwasser- und Meerwasserfisch aus der Ordnung der Aalartigen (Anguilliformes)<br>2. umgangssprachlich, und in Zusammensetzungen: Fisch oder Wassertier von länglicher Gestalt<br>3. Seefahrt, von U-Boot-Fahrern verwendete Bezeichnung für: Torpedo<br>4. Soldatensprache: neu eingezogener, unvereidigter Soldat, Soldat ohne Dienstgrad<br>5. junge Kalmuspflanze<br><b>Synonyme:</b><br>3. Torpedo<br>4. Brenner, Rotarsch, Sprutz, Zecke<br><b>Beispiele:</b><br>1. Er hatte einen sehr großen Aal gefangen.<br>1. Auf der Silberplatte lagen geräucherter Aal und Graved Lachs.<br>2. Meinst du, Freund der Tiere, man könnte Aal dazu sagen?<br>3. „Als mir der Torpedo endlich klar gemeldet wurde, gingen wir auf Gefechtskurs und nach Erreichen der Schussposition gab ich den Befehl ‚Torpedo los!‘ Der Aal verließ vorbildlich das Rohr, wurde dabei illegal vom I. Wachoffizier fotografiert und tauchte elegant ins Wasser.“ <br>4. Da zeigten es aber die Altgedienten den Aalen.<br>5. Zu jungen Kalmuspflanzen sagte Ehrenfried immer Aal und Herta ärgerte das.<br><br><i>Substantiv, mf, Nachname</i><i>, Aal, Pl. Aals</i><br><i>IPA:</i> [aːl]<br><b>Bedeutungen:</b><br>1. unterdurchschnittlich häufig auftretender, deutscher und niederländischer Nachname, Familienname häufigstes Vorkommen in Deutschland im Kreis Kleve in Nordrhein-Westfalen); auch mit Namenzusatz de<br><b>Beispiele:</b><br>1. Herr Aal heiratete Frau Müller im Mai. Nun heißt er Aal und sie Müller-Aal.<br>1. Heute sind wir bei Aals zu Besuch.<br>1. „Aal?! Vortreten!“<br>1. Der Aal ist's gewesen und die Aal hat's verpetzt.<br>1. Frau Aal ist ein Genie im Verkauf.<br>1. Herr Aal wollte uns kein Interview geben.<br>1. Die Aals kommen heute von Wangerooge.<br>1. Der Aal trägt nie die Schals, die die Aal ihm strickt.<br>1. Das kann ich dir aber sagen: „Wenn die Frau Aal kommt, geht der Herr Aal.“<br>1. Aal kommt und geht.<br>1. Aals kamen, sahen und siegten.<br>
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
	at com.hughes.android.dictionary.parser.DictFileParser.parseLine(DictFileParser.java:164)
	at com.hughes.android.dictionary.parser.DictFileParser.parse(DictFileParser.java:102)
	at com.hughes.android.dictionary.engine.DictionaryBuilder.main(DictionaryBuilder.java:153)
	at com.hughes.android.dictionary.engine.Runner.main(Runner.java:29)

So I also tried adding lang2=DE:

./run.sh --lang1=DE --lang2=DE --lang1Stoplist=data/inputs/stoplists/de.txt --dictOut=data/outputs/DE.quickdic --dictInfo="Wiktionary-based DE dictionary" --input1=data/inputs/MCH-DE-DE-test.txt --input1Name=dewikitionary --input1Charset=UTF8 --input1Format=tab_separated

This does produce a dictionary (that can even be converted to v006 format using ./genv6.sh):

Running with arguments:
--lang1=DE
--lang2=DE
--lang1Stoplist=data/inputs/stoplists/de.txt
--dictOut=data/outputs/DE.quickdic
--dictInfo=Wiktionary-based DE dictionary
--input1=data/inputs/MCH-DE-DE-test.txt
--input1Name=dewikitionary
--input1Charset=UTF8
--input1Format=tab_separated
lang1=de
lang2=de
normalizerRules1=:: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; 
normalizerRules2=:: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; 
dictInfo=Wiktionary-based DE dictionary
dictOut=data/outputs/DE.quickdic
Processing: data/inputs/MCH-DE-DE-test.txt

Dec 11, 2021 1:09:04 AM com.hughes.android.dictionary.parser.DictFileParser parse
INFO: count=0, line=Aal	<i>Substantiv, m</i><i>, Aal, Pl. Aa·le</i><br><i>IPA:</i> [aːl]<br><b>Bedeutungen:</b><br>1. Zoologie: schlangenförmiger Süßwasser- und Meerwasserfisch aus der Ordnung der Aalartigen (Anguilliformes)<br>2. umgangssprachlich, und in Zusammensetzungen: Fisch oder Wassertier von länglicher Gestalt<br>3. Seefahrt, von U-Boot-Fahrern verwendete Bezeichnung für: Torpedo<br>4. Soldatensprache: neu eingezogener, unvereidigter Soldat, Soldat ohne Dienstgrad<br>5. junge Kalmuspflanze<br><b>Synonyme:</b><br>3. Torpedo<br>4. Brenner, Rotarsch, Sprutz, Zecke<br><b>Beispiele:</b><br>1. Er hatte einen sehr großen Aal gefangen.<br>1. Auf der Silberplatte lagen geräucherter Aal und Graved Lachs.<br>2. Meinst du, Freund der Tiere, man könnte Aal dazu sagen?<br>3. „Als mir der Torpedo endlich klar gemeldet wurde, gingen wir auf Gefechtskurs und nach Erreichen der Schussposition gab ich den Befehl ‚Torpedo los!‘ Der Aal verließ vorbildlich das Rohr, wurde dabei illegal vom I. Wachoffizier fotografiert und tauchte elegant ins Wasser.“ <br>4. Da zeigten es aber die Altgedienten den Aalen.<br>5. Zu jungen Kalmuspflanzen sagte Ehrenfried immer Aal und Herta ärgerte das.<br><br><i>Substantiv, mf, Nachname</i><i>, Aal, Pl. Aals</i><br><i>IPA:</i> [aːl]<br><b>Bedeutungen:</b><br>1. unterdurchschnittlich häufig auftretender, deutscher und niederländischer Nachname, Familienname häufigstes Vorkommen in Deutschland im Kreis Kleve in Nordrhein-Westfalen); auch mit Namenzusatz de<br><b>Beispiele:</b><br>1. Herr Aal heiratete Frau Müller im Mai. Nun heißt er Aal und sie Müller-Aal.<br>1. Heute sind wir bei Aals zu Besuch.<br>1. „Aal?! Vortreten!“<br>1. Der Aal ist's gewesen und die Aal hat's verpetzt.<br>1. Frau Aal ist ein Genie im Verkauf.<br>1. Herr Aal wollte uns kein Interview geben.<br>1. Die Aals kommen heute von Wangerooge.<br>1. Der Aal trägt nie die Schals, die die Aal ihm strickt.<br>1. Das kann ich dir aber sagen: „Wenn die Frau Aal kommt, geht der Herr Aal.“<br>1. Aal kommt und geht.<br>1. Aals kamen, sahen und siegten.<br>
Done: data/inputs/MCH-DE-DE-test.txt


Most common tokens:
  Aal@0(1)
Most common tokens:
  1@0(1)
  2@2(1)
  3@4(1)
  4@6(1)
  5@8(1)
  aːl@10(1)
  Aa@12(1)
  Aal@14(1)
  Aalartigen@16(1)
  Aalen@18(1)
  Aals@20(1)
  aber@22(1)
  Als@24(1)
  Altgedienten@26(1)
  Anguilliformes@28(1)
  ärgerte@30(1)
  auch@32(1)
  auf@34(1)
  Auf@36(1)
  auftretender@38(1)
  aus@40(1)
  b@42(1)
  Bedeutungen@44(1)
  Befehl@46(1)
  bei@48(1)
  Beispiele@50(1)
  Besuch@52(1)
  Bezeichnung@54(1)
  Boot@56(1)
  br@58(1)
  Brenner@60(1)
  Da@62(1)
  dabei@64(1)
  das@66(1)
  Das@68(1)
  dazu@70(1)
  de@72(1)
  den@74(1)
  der@76(1)
  Der@78(1)
  deutscher@80(1)
  Deutschland@82(1)
  die@84(1)
  Die@86(1)
  Dienstgrad@88(1)
  dir@90(1)
  du@92(1)
  Ehrenfried@94(1)
  ein@96(1)
  einen@98(1)
Writing dictionary to: data/outputs/DE.quickdic
sources start: 44
RAFList stats: 0x1 entries
pair start: 74
RAFList stats: 1x64 entries
uncompressed min 2085, max 2085, sum 2085, average 2085.0
compressed min 1120, max 1120, sum 1120, average 1120.0
text start: 1205
RAFList stats: 0x1 entries
html index start: 1212
RAFList stats: 0x64 entries
html data start: 1219
RAFList stats: 0x128 entries
indices start: 1227
RAFList stats: 1x32 entries
uncompressed min 14, max 14, sum 14, average 14.0
compressed min 20, max 20, sum 20, average 20.0
RAFList stats: 7x32 entries
uncompressed min 104, max 647, sum 3385, average 483.57144
compressed min 86, max 410, sum 2153, average 307.57144
RAFList stats: 0x1 entries
end: 5133

Only when I try to use this dictionary on my Tolino Vision 5, it makes the Tolino app crash. (I’m assuming there are differences between a) single-language, b) bilingual, and c) bilingual-reverse dictionaries?)

Is it even possible to create functioning single-language dictionaries (with HTML content, one line per entry) from TAB-separated text files?

Maybe I just made a simple mistake?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.