package org.wlld.naturalLanguage.languageCreator;
import org.wlld.entity.DyStateModel;
import org.wlld.entity.KeyWordForSentence;
import org.wlld.gameRobot.Action;
import org.wlld.gameRobot.DynamicProgramming;
import org.wlld.gameRobot.DynamicState;
import java.util.*;
public class CatchKeyWord {//抓取关键词
private DynamicProgramming dynamicProgramming = new DynamicProgramming();//保存它的状态集合
private List<String> keyWords = new ArrayList<>();//保存词列表
private List<String> finishWords = new ArrayList<>();//终结态词集合
private Set<String> noList = new HashSet<>();//禁止词集合
private double proTh = 0.1;//收益阈值
public void setProTh(double proTh) {
this.proTh = proTh;
}
public void study(List<KeyWordForSentence> keyWordForSentenceList) {
int size = keyWordForSentenceList.size();
List<DynamicState> dynamicStateList = dynamicProgramming.getDynamicStateList();
DynamicState dynamicState0 = new DynamicState(new int[]{0});
dynamicState0.setFinish(true);
dynamicStateList.add(dynamicState0);
for (int i = 0; i < size; i++) {//添加禁止词
KeyWordForSentence keyWords = keyWordForSentenceList.get(i);
noList.add(keyWords.getKeyWord());
}
for (int i = 0; i < size; i++) {
KeyWordForSentence keyWords = keyWordForSentenceList.get(i);
String sentence = keyWords.getSentence();//句子
String keyWord = keyWords.getKeyWord();//关键词
int startIndex = getIndex(sentence, keyWord);
if (startIndex >= 0) {
creatID(sentence, startIndex, startIndex + keyWord.length() - 1);
}
}
Map<Integer, Action> actionMap = dynamicProgramming.getActionMap();
WordRight wordRight = new WordRight(keyWords, finishWords);
WordLeft wordLeft = new WordLeft(keyWords, finishWords);
wordRight.setActionId(1);
wordLeft.setActionId(2);
actionMap.put(1, wordRight);
actionMap.put(2, wordLeft);
dynamicProgramming.gameStart();//探索中奖
dynamicProgramming.strategyStudy();//研究策略中奖
}
private WordsValue isContinuity(int start1, int end1, int start2, int end2) {
boolean isContinuity = false;
WordsValue wordsValue = null;
if (end1 + 1 == start2 || end2 + 1 == start1) {//相接
isContinuity = true;
} else if ((start2 >= start1 && start2 <= end1) || (end2 >= start1 && end2 <= end1) ||
(start1 >= start2 && start1 <= end2) || (end1 >= start2 && end1 <= end2)) {//相交
isContinuity = true;
}
if (isContinuity) {
wordsValue = new WordsValue();
wordsValue.isMerge = false;
if (start1 > start2) {
wordsValue.startIndex = start2;
} else {
wordsValue.startIndex = start1;
}
if (end1 > end2) {
wordsValue.endIndex = end1;
} else {
wordsValue.endIndex = end2;
}
}
return wordsValue;
}
private void mergeWord(List<WordsValue> myDyList) {//合并状态
for (int i = 0; i < myDyList.size(); i++) {
WordsValue dynamicState = myDyList.get(i);
if (!dynamicState.isMerge) {
for (int j = 0; j < myDyList.size(); j++) {
if (j != i) {
int startIndex = dynamicState.startIndex;//开始下标
int endIndex = dynamicState.endIndex;//结束下标
boolean isFinish = dynamicState.isFinish;
double value = dynamicState.value;
WordsValue dynamic = myDyList.get(j);
int myStart = dynamic.startIndex;
int myEnd = dynamic.endIndex;
WordsValue wordsValue = isContinuity(startIndex, endIndex, myStart, myEnd);
if (wordsValue != null) {//可进行合并
dynamic.isMerge = true;
if (isFinish || dynamic.isFinish) {
wordsValue.isFinish = true;
} else {
wordsValue.isFinish = false;
}
if (wordsValue.isFinish) {
wordsValue.value = 10;
} else {
if (dynamic.value > value) {
wordsValue.value = dynamic.value;
} else {
wordsValue.value = value;
}
}
dynamicState = wordsValue;
}
}
}
myDyList.set(i, dynamicState);//替换合并后的结果
}
}
for (int i = 0; i < myDyList.size(); i++) {
if (myDyList.get(i).isMerge) {
myDyList.remove(i);
i--;
}
}
}
public KeyWordModel getModel() {
KeyWordModel keyWordModel = new KeyWordModel();
List<DyStateModel> dyStateModels = new ArrayList<>();
List<DynamicState> dynamicStateList = dynamicProgramming.getDynamicStateList();
int size = dynamicStateList.size();
for (int i = 0; i < size; i++) {
DynamicState dynamicState = dynamicStateList.get(i);
DyStateModel dyStateModel = new DyStateModel();
dyStateModel.setId(dynamicState.getStateId()[0]);
dyStateModel.setFinish(dynamicState.isFinish());
dyStateModel.setValue(dynamicState.getValue());
dyStateModels.add(dyStateModel);
}
keyWordModel.setDynamicStateList(dyStateModels);
keyWordModel.setKeyWords(keyWords);
return keyWordModel;
}
public void insertModel(KeyWordModel keyWordModel) {
List<String> myKeyWords = keyWordModel.getKeyWords();
List<DyStateModel> dynamicStates = keyWordModel.getDynamicStateList();
List<DynamicState> dynamicStateList = dynamicProgramming.getDynamicStateList();
int size = myKeyWords.size();
for (int i = 0; i < size; i++) {
keyWords.add(myKeyWords.get(i));
}
int s = dynamicStates.size();
for (int i = 0; i < s; i++) {
DyStateModel modelDy = dynamicStates.get(i);
DynamicState dynamicState = new DynamicState(new int[]{modelDy.getId()});
dynamicState.setValue(modelDy.getValue());
dynamicState.setFinish(modelDy.isFinish());
dynamicStateList.add(dynamicState);
}
}
private void insertValue(WordsValue wordsValue, DynamicState dynamicState, int startIndex, int endIndex) {//传输数值
wordsValue.isFinish = dynamicState.isFinish();
wordsValue.value = dynamicState.getValue();
wordsValue.startIndex = startIndex;
wordsValue.endIndex = endIndex;
wordsValue.id = dynamicState.getStateId()[0];
wordsValue.isMerge = false;
}
private List<WordsValue> getBestDyRight(String sentence) {
List<WordsValue> myDyList = new ArrayList<>();
List<DynamicState> dynamicStateList = dynamicProgramming.getDynamicStateList();
int size = sentence.length() - 1;
for (int i = size; i >= 0; i--) {
WordsValue maxDy = null; //0,1,2,3
for (int j = i; j >= 0; j--) {//我是好人
String word = sentence.substring(j, i + 1);//对该词进行收益判定
DynamicState dynamicState = getDynamicState(word, dynamicStateList);
if (dynamicState != null && dynamicState.getValue() > proTh) {
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
通过简单的api调用就可以实现对物体在图像中进行训练及识别,切割,定位的轻量级,面向小白的框架。对中文输入语句,对输入语句的类别进行分类,关键词抓取,词延伸,以及集成智能客服功能在逐渐扩展中。
资源推荐
资源详情
资源评论
收起资源包目录
通过简单的api调用就可以实现对物体在图像中进行训练及识别,切割,定位的轻量级,面向小白的框架 (138个子文件)
.gitignore 1KB
easyAi.iml 1KB
CatchKeyWord.java 24KB
NerveManager.java 21KB
MatrixOperation.java 20KB
Watershed.java 16KB
NerveManager.java 15KB
Nerve.java 14KB
Distinguish.java 14KB
Matrix.java 13KB
Tokenizer.java 13KB
Tree.java 12KB
Nerve.java 12KB
RandomNerveManager.java 12KB
DynamicProgramming.java 12KB
Forest.java 11KB
MP3.java 9KB
RegressionForest.java 9KB
RGBNorm.java 9KB
PSO.java 8KB
Talk.java 8KB
SentenceCreator.java 7KB
WordEmbedding.java 5KB
MyKeyWord.java 5KB
OutNerve.java 5KB
OutNerve.java 5KB
LVQ.java 4KB
RandomForest.java 4KB
Picture.java 4KB
Knn.java 4KB
WordTemple.java 4KB
Frequency.java 4KB
FoodConfig2.java 4KB
ThreeChannelMatrix.java 3KB
FastPictureExcerpt.java 3KB
WaveFile.java 3KB
Box.java 3KB
MeanClustering.java 3KB
TemplateReader.java 3KB
GMClustering.java 3KB
RgbRegression.java 3KB
NMS.java 3KB
LinearRegression.java 3KB
SentenceConfig.java 3KB
SoftMax.java 3KB
SoftMax.java 2KB
HiddenNerve.java 2KB
RegionBody.java 2KB
ModelParameter.java 2KB
WordRight.java 2KB
WordLeft.java 2KB
Config.java 2KB
DataTable.java 2KB
ModelParameter.java 2KB
Sentence.java 2KB
DynamicState.java 2KB
HiddenNerve.java 2KB
IdCreator.java 2KB
WordModel.java 2KB
ArithUtil.java 1KB
SensoryNerve.java 1KB
LangBody.java 1KB
SensoryNerve.java 1KB
Model.java 1KB
PicturePosition.java 1KB
WorldBody.java 943B
RegionBack.java 817B
WordMatrix.java 806B
WordBack.java 750B
RandomModelParameter.java 742B
RandomNerveBody.java 732B
Word.java 727B
SentenceModel.java 716B
CreatorWord.java 708B
RandomModel.java 702B
NerveStudy.java 688B
NerveStudy.java 685B
OutBack.java 653B
KeyWordModel.java 624B
CreatorSentenceModel.java 624B
TanHX.java 596B
RGB.java 590B
FoodPicture.java 589B
WordTwoVectorModel.java 584B
Node.java 566B
VoiceTest.java 565B
ConvBack.java 553B
RnnOutNerveStudy.java 538B
WordOfShop.java 534B
ELu.java 532B
DyStateModel.java 522B
Tanh.java 509B
MatrixBody.java 508B
ReLuTwo.java 505B
TreeWithTrust.java 501B
Action.java 500B
RnnOutNerveBody.java 480B
KeyWordForSentence.java 447B
Trust.java 446B
ValueFunction.java 427B
共 138 条
- 1
- 2
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6713
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- nginx配置文件,注意其中需要对应宿主机的路径
- 自用数据集自用数据集自用数据集
- HTML5小游戏【堆雪人-优秀H5小游戏合集】游戏源码分享下载 - epicsnowman.zip
- SNMP Client 是SNMP测试工具
- Android Camera内存统计脚本
- AD9220高速数据芯片硬件参考设计原理图+STM32F103单片机驱动程序代码+芯片技术手册资料.zip
- 常用爆破用户名字典top500
- meta-llama-3-8b-instruct 的 model-00003-of-00004.safetensors 的2/3
- bootstrap-select.js bootstrap-select.css
- EasyPoi Excel和 Word简易工具类
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功