增加语句向后递归

pull/1/head
lidapeng 5 years ago
parent de0ed10dc7
commit 278983f018

@ -6,8 +6,8 @@
<sourceOutputDir name="target/generated-sources/annotations" /> <sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" /> <outputRelativeToContentRoot value="true" />
<module name="ImageMarket" />
<module name="myBrain" /> <module name="myBrain" />
<module name="ImageMarket" />
</profile> </profile>
</annotationProcessing> </annotationProcessing>
</component> </component>

@ -34,11 +34,21 @@ public class Talk {
//拆词 //拆词
List<Sentence> sentences = new ArrayList<>(); List<Sentence> sentences = new ArrayList<>();
for (int i = 0; i < sens.length; i++) { for (int i = 0; i < sens.length; i++) {
Sentence sentenceWords = new Sentence(); List<Sentence> sentenceList = catchSentence(sentence);
catchSentence(sentence, sentenceWords); int key = 0;
sentences.add(sentenceWords); int nub = 0;
for (int j = 0; j < sentenceList.size(); j++) {
Sentence sentence1 = sentenceList.get(j);
restructure(sentence1);
int size = sentence1.getKeyWords().size();
if (size > nub) {
key = j;
nub = size;
}
}
sentences.add(sentenceList.get(key));
} }
restructure(sentences);
//进行识别 //进行识别
if (randomForest != null) { if (randomForest != null) {
for (Sentence sentence1 : sentences) { for (Sentence sentence1 : sentences) {
@ -91,34 +101,36 @@ public class Talk {
return nub; return nub;
} }
private void catchSentence(String sentence, Sentence sentenceWords) {//把句子拆开 private List<Sentence> catchSentence(String sentence) {//把句子拆开
int len = sentence.length(); int len = sentence.length();
for (int i = 0; i < len; i++) { List<Sentence> sentences = new ArrayList<>();
String word = sentence.substring(0, i + 1); for (int j = 0; j < len - 2; j++) {
sentenceWords.setWord(word); Sentence sentenceWords = new Sentence();
for (int i = j; i < len; i++) {
String word = sentence.substring(j, i + 1);
sentenceWords.setWord(word);
}
sentences.add(sentenceWords);
} }
return sentences;
} }
private void restructure(List<Sentence> sentences) {//对句子里面的Word进行词频统计 private void restructure(Sentence words) {//对句子里面的Word进行词频统计
for (Sentence words : sentences) { List<WorldBody> listWord = allWorld;
List<WorldBody> listWord = allWorld; List<Word> waitWorld = words.getWaitWords();
List<Word> waitWorld = words.getWaitWords(); for (Word word : waitWorld) {
for (Word word : waitWorld) { String myWord = word.getWord();
String myWord = word.getWord(); WorldBody body = getBody(myWord, listWord);
WorldBody body = getBody(myWord, listWord); if (body == null) {//已经无法查找到对应的词汇了
if (body == null) {//已经无法查找到对应的词汇了 word.setWordFrequency(1);
word.setWordFrequency(1); break;
break;
}
listWord = body.getWorldBodies();//这个body报了一次空指针
word.setWordFrequency(body.getWordFrequency());
} }
listWord = body.getWorldBodies();//这个body报了一次空指针
word.setWordFrequency(body.getWordFrequency());
} }
Tokenizer tokenizer = new Tokenizer(); Tokenizer tokenizer = new Tokenizer();
for (Sentence words : sentences) { tokenizer.radiation(words);
tokenizer.radiation(words);
}
} }
private WorldBody getBody(String word, List<WorldBody> worlds) { private WorldBody getBody(String word, List<WorldBody> worlds) {

@ -20,7 +20,7 @@ public class LangTest {
TemplateReader templateReader = new TemplateReader(); TemplateReader templateReader = new TemplateReader();
templateReader.read("/Users/lidapeng/Desktop/myDocment/a1.txt", "UTF-8", IOConst.NOT_WIN); templateReader.read("/Users/lidapeng/Desktop/myDocment/a1.txt", "UTF-8", IOConst.NOT_WIN);
Talk talk = new Talk(); Talk talk = new Talk();
List<Integer> list = talk.talk("我草尼玛"); List<Integer> list = talk.talk("被锁外面了");
System.out.println(list); System.out.println(list);
} }
} }

Loading…
Cancel
Save