나는 wordnet에서 synsets를 검색하여 배열로 반환합니다. 이것은 내 코드의 일부입니다bfs로 검색
<pre>
RiWordnet wordnet = new RiWordnet();
String word = lineTF.getText();
// Get synsets
String[] synsets = wordnet.getAllSynsets(word, "n");
String outputSynset = "Word: " + word;
GUIsynonymTA.append("\n");
GUIsynonymTA.append(outputSynset);
GUIsynonymTA.append("\n");
if (synsets != null)
{
for (int i = 0; i < synsets.length; i++)
{
GUIsynonymTA.append("\n");
GUIsynonymTA.append("Synsets " + i + ": " + (synsets[i]));
GUIsynonymTA.append("\n");
//implement BFS here
<code>
이 줄까지, 나는 성공적으로 synsets를 검색했습니다. 내가 할 일은 WordNet synsets 검색에서 Breadth First Search를 구현하는 것입니다. wordnet에 모든 동의어를 저장하는 RiWordnet 라이브러리에서 getAllSynsets 메소드를 호출하고 있습니다. 루핑 (if..else)을 사용해 보았지만 내 검색을 어디에서 멈출 지 모르겠습니다. BFS를 사용하면 검색 동의어가 방문한 노드로 표시되는 검색 범위를 알 수 있습니다. 다음은 동의어 검색에서 BFS를 사용하여 구현하고자하는 개념입니다. 예를 들어
는 :
student = {pupil, educatee, scholar, bookman}
pupil = {student, educatee, schoolchild}
educatee = {student, pupil} --> has been search, so go to the next synonym.
schoolchild = {pupil} --> has been search, so go to the next synonym.
scholar = {bookman, student, learner, assimilator}
bookman = {scholar, student} --> has been search, so go to the next synonym.
learner = {scholar, assimilator, apprentice, prentice}
assimilator = {learner, scholar} --> has been search, so go to the next synonym.
apprentice = {learner} --> has been search, so go to the next synonym.
prentice = {apprentice, learner} --> has been search, so go to the next synonym.
ALL SYNONYM HAS BEEN SEARCH, SO STOP.
어떤 사람들은 HashSet의 대신 BFS을 적용하라고 제안했다. 누구든지 나를 도울 수 있습니까?
Queue<String> pending = ...
HashSet<String> processed = ...
pending.add("startWord");
processed.add("startWord");
while (!pending.isEmpty()) {
String word = pending.remove();
String[] possibilities = wordnet.getAllSynsets(word, "n");
for (String p : possibilities) {
// Make sure we haven't already processed the new word
if (!processed.contains(p)) {
pending.add(p);
processed.contains(p);
}
}
}
// At this point, processed contains all synonyms found
그것은 (BFS가 무엇인지 기본적으로) 동의어의 재귀 확장 더 많거나 적은 : 당신이 뭔가를 원하는 것처럼
synsets에 비해 BFS가 무슨 뜻입니까? 그것들은 평범한 데이터이고, BFS는 그래프로 찾기위한 골자입니다. – ffriend
다른 [질문] (http://stackoverflow.com/questions/6935916/nested-search-of-synsets-from-wordnet-using-java)에서 아이디어를 얻었으나 BFS에서 무엇을 찾으려고합니까? 동의어의 모든 동의어와 동의어, 동의어의 동의어 등을 열거하려면 재귀를 사용하고 모든 동의어를 HashSet에 넣으면 서클을 피할 수 있습니다. – ffriend
감사합니다. 실제로 BFS는 방문 및 비공개 그래프의 개념을 사용합니다. 나는 검색의 한계를 설정하기 위해 이것을 구현하고 싶다. 동의어가 검색되면 (BFS에서 방문한 것으로 표시됨) 검색이 중지됩니다. 시스템은 검색을 통해 발견 된 모든 동의어를 나열합니다. –