ArrayList に格納されたスペースで区切られたトークンで構成される文字列のリストがあります。文字列 1 のトークンが文字列 2 に存在するかどうかをスキャンする必要があります。スキャナーを使用してトークンをスキャンすることができました。ただし、スキャナーは私が望んでいたことをしません。
1 についての提案/アドバイスが必要
です。私が提供したコードを使用すると、スキャナーは 2 番目の NN トークンを含むすべての NN トークンを検索します。最初の NN トークンで停止し、すべての NN トークンのスキャンを続行する必要はありません。{ヘイリーの休憩に関するアドバイスはスキャナーを停止します}
2. [編集済み] もう 1 つの問題は、文字列 1 に 2 つの NN トークンがある場合、スキャナーは以前のスキャンで見つかったすべてのトークンをスキップするのに十分スマートでなければならないということです。スキャナは、文字列 1 の 2 番目の NN トークンを文字列 2 の 2 番目の NN トークンと照合できる必要があります。
これは私がこれまでに持っているものです..
import java.util.ArrayList;
import java.util.Scanner;
public class TokenMatching {
public static void main(String[] args)
{
ArrayList<String> taggedArray = new ArrayList<String>();
//Example how the string would look like
String string1 = "WRB VBD NN VB IN CC RB VBP NNP";
String string2 = "WRB NN MD PRP VB DT NN IN NNS POS JJ NNS";
taggedArray.add(string1);
taggedArray.add(string2);
//Nested for loop to match taggedArray(i) with taggedArray(j)
for(int i = 0; i< taggedArray.size(); i++)
{
for(int j = i + 1; j < taggedArray.size(); j++)
{
Scanner scan1 = new Scanner(taggedArray.get(i));
int index1 = 0;
while(scan1.hasNext())
{
String token1;
token1 = scan1.next();
System.out.println(token1);
Scanner scan2 = new Scanner(taggedArray.get(j));
int index2 =0;
while(scan2.hasNext())
{
String token2 = scan2.next();
if(token1.equals(token2))
{
int relPosition;
relPosition = Math.abs(index1-index2);
//The print lines help me keep track of what is going on in the loop
System.out.println("Match found.");
System.out.println("Relative position for " + token1 + " : " + relPosition);
}
else
{
System.out.println("No Match Found.");
}
index2++;
}
index1++;
}
}
}
}
}
どんなアドバイスも大いに役立ちます。ありがとうございました。