* Slúži pre vytvorenie databázy príbuzných slov pre 1 kľúčové slovo.
10
* Slúži pre vytvorenie databázy príbuzných slov pre 1 kľúčové slovo.
11
*
11
*
12
*/
12
*/
13
public class KeyWordData
13
public class KeyWordData {
14
{
14
15
/** kľúčové slovo */
15
/** kľúčové slovo */
16
private String keyWord;
16
private String keyWord;
17
/** filter príbuzných slov */
17
/** filter príbuzných slov */
18
private boolean[] searchFilter;
18
private boolean[] searchFilter;
19
/** databáza príbuzných slov */
19
/** databáza príbuzných slov */
20
private RelatedWordsDatabase relatedWords;
20
private RelatedWordsDatabase relatedWords;
21
21
//private String [] clazzNamewords;
22
private WordNetControl wordNet;
22
private WordNetControl wordNet;
23
23
24
/**
24
/**
25
*
25
*
26
* @param keyWord Kľúčové slovo.
26
* @param keyWord Kľúčové slovo.
27
* @param wordNet Objekt pre prístup ku funkciám slovníku wordnet.
27
* @param wordNet Objekt pre prístup ku funkciám slovníku wordnet.
28
*/
28
*/
29
public KeyWordData(String keyWord, boolean[] searchFilter, WordNetControl wordNet)
29
public KeyWordData(String keyWord, boolean[] searchFilter, WordNetControl wordNet) {
30
{
31
this.keyWord = keyWord;
30
this.keyWord = keyWord;
32
this.wordNet = wordNet;
31
this.wordNet = wordNet;
33
this.searchFilter = searchFilter;
32
this.searchFilter = searchFilter;
34
relatedWords = new RelatedWordsDatabase();
33
relatedWords = new RelatedWordsDatabase();
35
34
36
fillRelatedWordsDb();
35
fillRelatedWordsDb();
37
}
36
}
38
37
38
public KeyWordData(String keyWord, String[] clazzNameWords, boolean[] searchFilter, WordNetControl wordNet) {
39
this.keyWord = keyWord;
40
this.wordNet = wordNet;
41
this.searchFilter = searchFilter;
42
relatedWords = new RelatedWordsDatabase();
43
44
fillRelatedWordsDb(clazzNameWords);
45
}
46
39
/**
47
/**
40
* Získanie kľúčového slova, ktoré reprezentuje tento objekt.
48
* Získanie kľúčového slova, ktoré reprezentuje tento objekt.
41
* @return Kľúčové slovo reprezentujúce tento objekt.
49
* @return Kľúčové slovo reprezentujúce tento objekt.
42
*/
50
*/
43
public String getKeyWord()
51
public String getKeyWord() {
44
{
45
return keyWord;
52
return keyWord;
46
}
53
}
47
54
48
/**
55
/**
49
* Zístenie váhy príbuzného slova vzhľadom ku kľúčovému slovu.
56
* Zístenie váhy príbuzného slova vzhľadom ku kľúčovému slovu.
50
* @param word Príbuzné slovo, pre ktoré chceme zistiť váhu.
57
* @param word Príbuzné slovo, pre ktoré chceme zistiť váhu.
51
* @return Váha príbuzného slova.
58
* @return Váha príbuzného slova.
52
*/
59
*/
53
public int getWeight(String word)
60
public int getWeight(String word) {
54
{
55
return relatedWords.getWeight(word);
61
return relatedWords.getWeight(word);
56
}
62
}
57
63
58
/**
64
/**
59
* Zistenie typu vzťahu medzi kľúčovým a príbuzným slovom.
65
* Zistenie typu vzťahu medzi kľúčovým a príbuzným slovom.
60
* @param word Príbuzné slovo, pre ktoré chceme zistiť typ vzťahu.
66
* @param word Príbuzné slovo, pre ktoré chceme zistiť typ vzťahu.
61
* @return Vzťah príbuzného slova ku kľúčovému slovu.
67
* @return Vzťah príbuzného slova ku kľúčovému slovu.
62
*/
68
*/
63
public String getRelation(String word)
69
public String getRelation(String word) {
64
{
65
return relatedWords.getRelation(word);
70
return relatedWords.getRelation(word);
66
}
71
}
67
72
68
/**
73
/**
69
* Získanie všetkých príbuzných slov ku kľúčovému slovu utriedených podľa váhy.
74
* Získanie všetkých príbuzných slov ku kľúčovému slovu utriedených podľa váhy.
70
* @return Príbuzné slová utriedené podľa váhy.
75
* @return Príbuzné slová utriedené podľa váhy.
71
*/
76
*/
72
public String[] getSortedRelatedWords()
77
public String[] getSortedRelatedWords() {
73
{
74
return relatedWords.getSortedWords();
78
return relatedWords.getSortedWords();
75
}
79
}
76
80
77
/**
81
/**
78
* Slúži pre naplnenie databázy príbuzných slov. Najprv sa získajú všetky významy(synsets) pomocou slovníka WordNet a následne sa hľadá pre každý význam
množina príbuzných slov. Po získaní všetkých príbuzných slov sa tieto triedia na základe váhy od slov s najmenšou váhou po najväčšiu. (pozn. slová s najmenšou
váhou sú najdôležitejšie)
82
* Slúži pre naplnenie databázy príbuzných slov. Najprv sa získajú všetky významy(synsets) pomocou slovníka WordNet a následne sa hľadá pre každý význam
množina príbuzných slov. Po získaní všetkých príbuzných slov sa tieto triedia na základe váhy od slov s najmenšou váhou po najväčšiu. (pozn. slová s najmenšou
váhou sú najdôležitejšie)
* Trieda reprezentujúca držiteľa štatistických údajov pre projekt. Objekt obsahuje tieto údaje o projekte:* Trieda reprezentujúca držiteľa štatistických údajov pre projekt. Objekt obsahuje tieto údaje o projekte:public class ProjectStatistics {public class ProjectStatistics extends SwingWorker<Void, Void> {private ArrayList<Integer> backup = null;private String[] sortedAllWords;private int[] sortedAllWordsCounts;private String[] unsortedWordsInProject;public ProjectStatistics(SourceFile[] sourceFiles, String path, WordNetControl wordNet) {public ProjectStatistics(SourceFile[] sourceFiles, String path, WordNetControl wordNet) {public void generateStatistics() {public void generateStatistics(JProgressBar progressbar) {for (int i = 0; i < getStatisticsForSourceFiles().length; i++) {for (int i = 0; i < getStatisticsForSourceFiles().length; i++) {if (progressbar != null) {System.out.println("percent" + percent);System.out.println("number of files" + numberOfFilles);System.out.println("bar" + barNumber);for (int j = 0; j < wordsInSourceFile.length; j++) {for (int j = 0; j < wordsInSourceFile.length; j++) {Object[] comObj = commentWordsSet.toArray();for (int i = 0; i < getCommentWords().length; i++) {for (int i = 0; i < getCommentWords().length; i++) {System.out.print("Guessing types for words...");System.out.print("Guessing types for words...");for (int i = 0; i < wordsInDatabase.length; i++) {for (int i = 0; i < wordsInDatabase.length; i++) {if (progressbar != null) {System.out.println("percent" + percent);System.out.println("words" + wordsInDatabase.length);if (barNumber > 9) {System.out.println("bar" + barNumber);if (filter.isWithoutComments()) {if (commentWordsSet.contains(word)) {if (wordTypesMap.containsKey(word)) {if (wordTypesMap.containsKey(word)) {} else {} else {for (int i = 0; i < wordsInProjectUsageCounts.length; i++) {for (int i = 0; i < wordsInProjectUsageCounts.length; i++) {for (int j = 0; j < getStatisticsForSourceFiles().length; j++) {for (int j = 0; j < getStatisticsForSourceFiles().length; j++) {wordUsageCount += getStatisticsForSourceFiles()[j].getWordUsage(wordsInProject[i], true);String[] filteredWordsInProject = null;String[] filteredWordsInProject = filter.filterWords(wordsInProject);if (filter.isOnlyComments()) {filteredWordsInProject = filter.filterWords(commentWords);} else {filteredWordsInProject = filter.filterWords(wordsInProject);}unsortedWordsInProject = filteredWordsInProject;for (int i = 0; i < filteredWordsInProject.length; i++) {for (int i = 0; i < filteredWordsInProject.length; i++) {for (int j = 0; j < getStatisticsForSourceFiles().length; j++) {for (int j = 0; j < getStatisticsForSourceFiles().length; j++) {wordUsageCount += getStatisticsForSourceFiles()[j].getWordUsage(filteredWordsInProject[i], filter.isComment());ArrayList<Integer> backup = new ArrayList<Integer>();for (int i = 0; i < wordsUsageCountsList.size(); i++) {for (int i = 0; i < wordsUsageCountsList.size(); i++) {/* for (int i = 0; i < wordsList.size(); i++) {/* for (int i = 0; i < wordsList.size(); i++) {if (countsList.get(i) == 0) {if (countsList.get(i) == 0) {wordsList.remove(i);countsList.remove(i);}*/}*/mostUsedWordsCounts = sortedCounts;setMostUsedWordsCounts(sortedCounts);string.append("Number of words in whole project: " + wordsInProject.length + "\n");if (filter.isWithoutComments()) {string.append("Number of whole words in project: " + wordsInDatabase.length + "(" + wordsInDatabaseRatioRounded + "%)\n");string.append("Number of words in whole project: " + (wordsInProject.length - commentWords.length) + "\n");string.append("Number of not recognized words in project: " + wordsNotInDatabase.length + "(" + (100 - wordsInDatabaseRatioRounded) + "%)\n\n");string.append("Number of whole words in project: " + (wordsInDatabase.length - commentWordsInDatabaseCount) + "(" + ((wordsInDatabase.length - commentWordsInDatabaseCount) / (wordsInProject.length - commentWords.length)) * 100 + "%)\n");string.append("Number of not recognized words in project: " + (wordsNotInDatabase.length - commentWordsNotInDatabaseCount) + "(" + (100 - Math.round(((wordsInDatabase.length - commentWordsInDatabaseCount) / (wordsInProject.length - commentWords.length)) * 100)) + "%)\n\n");} else {string.append("Number of words in whole project: " + wordsInProject.length + "\n");string.append("Number of whole words in project: " + wordsInDatabase.length + "(" + wordsInDatabaseRatioRounded + "%)\n");string.append("Number of not recognized words in project: " + wordsNotInDatabase.length + "(" + (100 - wordsInDatabaseRatioRounded) + "%)\n\n");string.append("Number of nouns: " + nounsCount + "\n");string.append("Number of nouns: " + nounsCount + "\n");string.append("Number of verbs: " + verbsCount + "\n");string.append("Number of verbs: " + verbsCount + "\n");string.append("Number of adjectives: " + adjectivesCount + "\n");string.append("Number of adjectives: " + adjectivesCount + "\n");string.append("\nVerbs: " + variableWordTypesCount[1]);string.append("\nVerbs: " + variableWordTypesCount[1]);string.append("\nAdjectives: " + variableWordTypesCount[2]);string.append("\nAdjectives: " + variableWordTypesCount[2]);string.append("\nAdverbs: " + variableWordTypesCount[3]);string.append("\nAdverbs: " + variableWordTypesCount[3]);if (!filter.isWithoutComments()) {string.append("\n\nStatistics for comments: ");string.append("\nNouns: " + getCommentWordTypesCount()[0]);string.append("\nVerbs: " + getCommentWordTypesCount()[1]);string.append("\nAdjectives: " + getCommentWordTypesCount()[2]);string.append("\nAdverbs: " + getCommentWordTypesCount()[3]);string.append("\n\nThe most used words: (except these words: ");for (int i = 0; i < notWantedWords.length; i++) {string.append(")\n");for (int i = 0; i < getMostUsedWords().length; i++) {if (getMostUsedWords()[i] == null) {public String generateStatisticsCommentString() {string.append("Project path: " + projectPath + "\n");string.append("Number of source files in project: " + sourceFiles.length + "\n");string.append("Number of words in whole project: " + wordsInProject.length + "\n");string.append("Number of whole words in project: " + wordsInDatabase.length + "(" + wordsInDatabaseRatioRounded + "%)\n");string.append("Number of not recognized words in project: " + wordsNotInDatabase.length + "(" + (100 - wordsInDatabaseRatioRounded) + "%)\n\n");string.append("\n\nStatistics for comments: ");string.append("\n\nStatistics for comments: ");string.append("\nNouns: " + getCommentWordTypesCount()[0]);string.append("\nNouns: " + getCommentWordTypesCount()[0]);string.append("\nAdjectives: " + getCommentWordTypesCount()[2]);string.append("\nAdjectives: " + getCommentWordTypesCount()[2]);string.append("\nAdverbs: " + getCommentWordTypesCount()[3]);string.append("\nAdverbs: " + getCommentWordTypesCount()[3]);string.append("\n\nThe most used words: (except these words: ");string.append("\n\nThe most used words in comments: (except these words: ");for (int i = 0; i < notWantedWords.length; i++) {for (int i = 0; i < notWantedWords.length; i++) {string.append(")\n");string.append(")\n");for (int i = 0; i < getMostUsedWords().length; i++) {for (int i = 0; i < getMostUsedWords().length; i++) {if(getMostUsedWords()[i]==null)if (getMostUsedWords()[i] == null) {{string.append((i + 1) + ". Word: \"" + getMostUsedWords()[i] + "\". Used " + mostUsedWordsCounts[i] + " times\n");string.append((i + 1) + ". Word: \"" + getMostUsedWords()[i] + "\". Used " + getMostUsedWordsCounts()[i] + " times\n");public String[] getWordsInProject() {public String[] getWordsInProject() {public String[] getNumberWordsInProject(int count) {for (int i = 0; i < count; i++) {public int getVariableWordsCount() {public int getVariableWordsCount() {public int getCommentWordsCount() {public int getCommentWordsCount() {public int getClassWordsInDatabaseCount() {public int getClassWordsInDatabaseCount() {public int getVariableWordsNotInDatabaseCount() {public int getVariableWordsNotInDatabaseCount() {public int getCommentWordsNotInDatabaseCount() {public int getCommentWordsNotInDatabaseCount() {public int getNounsCount() {public int getNounsCount() {public SourceFileStatistics[] getStatisticsForSourceFiles() {public SourceFileStatistics[] getStatisticsForSourceFiles() {protected Void doInBackground() {public int getBarNumber() {public void setBarNumber(int barNumber) {public int[] getMostUsedWordsCounts() {public void setMostUsedWordsCounts(int[] mostUsedWordsCounts) {{{for (int i = 0; i < wordsToSort.length; i++) {for (int i = 0; i < countsList.size(); i++) {while (countsIterator.hasNext()) {/* for (int i = 0; i < wordsList.size(); i++) {if (countsList.get(i) == 0) {for (int i = 0; i < wordsList.size(); i++) {if (countsList.get(i) == count) {public String[] getSortedAllWords(int count) {for (int i = 0; i < count; i++) {public int[] getSortedAllWordsCounts(int count) {for (int i = 0; i < count; i++) {public String[] getUnsortedWordsInProject() {import analyzer.statistics.*;import analyzer.wordAnalysis.*;{{{{private String packageName;{{{{{{public MethodNode(String methodName, int startLine, int endLine, int column){{{{/** rodičovský uzol */{{private GeneralClassNode rootClassNode = null;*/public class MyTreeScanner extends TreeScanner<Void, Void> {{public MyTreeScanner() {{public Void visitCompilationUnit(CompilationUnitTree compilationUnit, Void arg) {this.compilationUnit = (JCTree.JCCompilationUnit) compilationUnit;{this.compilationUnit = (JCTree.JCCompilationUnit)compilationUnit;public Void visitClass(ClassTree classTree, Void arg) {JCTree.JCClassDecl classDeclaration = (JCTree.JCClassDecl) classTree;{JCTree.JCClassDecl classDeclaration = (JCTree.JCClassDecl)classTree;try {{} catch (Exception e) {column = 0;catch (Exception e) { column = 0; }if (!sourceFile.isRootClassNodeInitialized()) {{try {{} catch (NullPointerException e) {catch(NullPointerException e){} //inak ide o vnútornú trieduelse {//inak ide o vnútornú trieduelse}// System.out.println(this.compilationUnit.getSourceFile().getName());Iterator iterator = this.compilationUnit.docComments.keySet().iterator();while (iterator.hasNext()) {int i=0;JCTree tree = (JCTree) iterator.next();while(iterator.hasNext())System.out.println("Start possition");{System.out.println(tree.getStartPosition());JCTree tree= (JCTree)iterator.next();map = this.compilationUnit.docComments;System.out.println(i);System.out.println("End possition");i++;System.out.println(tree.getStartPosition() + map.get(tree).length());//System.out.println("Start possition");sourceFile.addCommentNode(map.get(tree), tree.getStartPosition(), tree.getStartPosition() + map.get(tree).length(), 1);// System.out.println(tree.getStartPosition());map =this.compilationUnit.docComments;// System.out.println("End possition");// System.out.println(tree.getStartPosition()+ map.get(tree).length());sourceFile.addCommentNode(map.get(tree), tree.getStartPosition(), tree.getStartPosition()+ map.get(tree).length(), 1);public Void visitMethod(MethodTree methodTree, Void arg) {JCTree.JCMethodDecl methodDeclaration = (JCTree.JCMethodDecl) methodTree;{JCTree.JCMethodDecl methodDeclaration = (JCTree.JCMethodDecl)methodTree;try {{} catch (Exception e) {column = 0;catch (Exception e) { column = 0; }public Void visitVariable(VariableTree variableTree, Void arg) {JCTree.JCVariableDecl variableDeclaration = (JCTree.JCVariableDecl) variableTree;{JCTree.JCVariableDecl variableDeclaration = (JCTree.JCVariableDecl)variableTree;try {{} catch (Exception e) {column = 0;catch (Exception e) { column = 0; }public SourceFile getSourceFile() {{public class KeyWordData {{//private String [] clazzNamewords;public KeyWordData(String keyWord, boolean[] searchFilter, WordNetControl wordNet) {{this.wordNet = wordNet;}public KeyWordData(String keyWord, String[] clazzNameWords, boolean[] searchFilter, WordNetControl wordNet) {this.keyWord = keyWord;this.wordNet = wordNet;this.searchFilter = searchFilter;relatedWords = new RelatedWordsDatabase();fillRelatedWordsDb(clazzNameWords);}public String getKeyWord() {{public int getWeight(String word) {{public String getRelation(String word) {{public String[] getSortedRelatedWords() {{private void fillRelatedWordsDb() {{for (int i = 0; i < orderedSynsets.length; i++) {{for (int j = 0; j < words.length; j = j+2)for (int j = 0; j < words.length; j = j + 2) {{String relation = words[j+1];String relation = words[j + 1];private int calculateWeight(int synsetOrder, String relation) {{if (relation.equals("synonym"))if (relation.equals("synonym")) {else if (relation.equals("hypernym"))} else if (relation.equals("hypernym")) {else if (relation.equals("hyponym") || relation.equals("instance hyponym"))} else if (relation.equals("hyponym") || relation.equals("instance hyponym")) {else if (relation.equals("part holonym") || relation.equals("member holonym"))} else if (relation.equals("part holonym") || relation.equals("member holonym")) {else if (relation.equals("part meronym") || relation.equals("member meronym"))} else if (relation.equals("part meronym") || relation.equals("member meronym")) {else if (relation.equals("attribute"))} else if (relation.equals("attribute")) {else if (relation.equals("topic") || relation.equals("topic member"))} else if (relation.equals("topic") || relation.equals("topic member")) {else if (relation.equals("region") || relation.equals("region member"))} else if (relation.equals("region") || relation.equals("region member")) {else if (relation.equals("usage") || relation.equals("usage member"))} else if (relation.equals("usage") || relation.equals("usage member")) {else if (relation.equals("antonym"))} else if (relation.equals("antonym")) {else if (relation.equals("similar"))} else if (relation.equals("similar")) {else if (relation.equals("participle"))} else if (relation.equals("participle")) {else if (relation.equals("pertainym"))} else if (relation.equals("pertainym")) {else if (relation.equals("related"))} else if (relation.equals("related")) {else if (relation.equals("troponym"))} else if (relation.equals("troponym")) {else if (relation.equals("entailment"))} else if (relation.equals("entailment")) {else if (relation.equals("outcome"))} else if (relation.equals("outcome")) {else if (relation.equals("phrase"))} else if (relation.equals("phrase")) {else if (relation.equals("verb group"))} else if (relation.equals("verb group")) {else} else {}private void fillRelatedWordsDb(String[] clazzNameWords) {for (int k = 0; k < clazzNameWords.length; k++) {for (int i = 0; i < orderedSynsets.length; i++) {for (int j = 0; j < words.length; j = j + 2) {System.out.println("");{{public static List<String> splitWords(String name)public static List<String> splitWords(String name){{if (name.equals(""))if (name.equals("")){{private String projectDirectory;{{/** mapa váh slov */{{private String[] keyWords;{{intpublic String[] filterWords(String[] words) {public String[] filterWords(String[] words) {for (int i = 0; i < words.length; i++) {//System.out.println(i);for (int i = 0; i < words.length; i++) {//System.out.println(i);for (int j = 0; j < notAllowedWords.length; j++) {for (int j = 0; j < notAllowedWords.length; j++) {if (word.equals(notAllowedWords[j])) {if (word.equals(notAllowedWords[j])|| word.startsWith("@")) {public String[] filterWords(String[] words, JProgressBar progressBar,int dictionaryNumber,int dictionaryCount) {for (int i = 0; i < words.length; i++) {//System.out.println(i);if (wordLength >= minimumWordLength && wordLength <= maximumWordLength) {for (int j = 0; j < notAllowedWords.length; j++) {if (word.equals(notAllowedWords[j])|| word.startsWith("@")) {if (!passedWord) {if (isWordInDatabase && (!excludeFoundWords)) { //filtrovanie slov, ktoré sa našli v databázeif (!allowedTypes.contains(wordNet.getType(word))) {{{} else if (!isWordInDatabase && !excludeNotFoundWords) {{{for (int i = 0; i < passedWords.length; i++) {private int getCount(String word,boolean filter) {private int getCount(String word,boolean filter) {//for (int j = 0; j < NameAnalysisDialog.getStatistics().getStatisticsForSourceFiles().length; j++) {for (int j = 0; j < NameAnalysisDialog.getStatistics().getStatisticsForSourceFiles().length; j++) {// wordUsageCount += NameAnalysisDialog.getStatistics().getStatisticsForSourceFiles()[j].getWordUsage(word,filter);// }public boolean isAll() {public void setAll(boolean All) {public boolean isOnlyComments() {public void setOnlyComments(boolean onlyComments) {public boolean isWithoutComments() {public void setWithoutComments(boolean withoutComments) {import edu.smu.tspell.wordnet.*;addWordToTable(word.toLowerCase().trim(), node);