0

課題のために、入力ファイルを辞書の単語の二分探索木と照合してスペルミスをチェックしています。

私が抱えている問題は、スペルミスの単語として「今日」のような数字やものを返すことです。入力からすべての句読点と数字を除外したい。

.useDelimiter() メソッドに出くわしましたが、括弧に入れるパラメーターがわかりません。今のところ、見つけたものをコピーして貼り付けて、機能するかどうかを確認しています。

これは、これまでのところ、単語を読み取るための私のコードです。

reader = new Scanner(new File(testFile));
reader.useDelimiter("[.,:;()?!\"\\s\\d]+");
while (reader.hasNext()) {
test.add(reader.next());

これを行うと、数字や「today」などの発生が停止しますが、「5th」などの単語がある場合、「th」のスペルが間違っていると表示されます。

どんな助けでも感謝します。

4

2 に答える 2

0

最初のコメント: この問題を簡単に解決することはできません。

あなたは(明らかに)英語のスペルを扱っています.プログラミングに適した単純なルールのセットは、あなたがやりたいことをするつもりはありません. だから期待しないでください。時折発生する偽陽性に満足していないことは明らかなので、それを行うのは難しいでしょう。

これらすべてを区切り文字として使用することをあきらめる必要があると思います-短縮も機能しません。ファイルを解析し、より広い定義を使用して「単語」を取得し、各単語に取り組んで、スペルチェックを通過するものと通過しないものを決定する必要があると思います。

スキャンでも先読みが必要になる場合があります。一重引用符は、単語や語句の引用、短縮形、または所有格の引用に使用でき、スペル チェックではすべて異なる方法で処理する必要があります。

于 2013-10-20T12:12:35.550 に答える
0

間違っている場合は修正してください。ただし、引数はuseDelimiter「パイプ」記号で区切る必要があります。お気に入りuseDelimiter("[|,|\\n")

于 2013-10-20T12:30:00.210 に答える