最好有代码我不怎么会写用的spring boot+maven
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int NOT NULL,
`词汇` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`词汇总` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`浮点` double(255, 5) NOT NULL,
`整数` int NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES (1, 'for for ends', 'for for end', 1.20000, 1);
INSERT INTO `test` VALUES (2, 'fors for end', 'for for end', 2.40000, 2);
INSERT INTO `test` VALUES (3, 'ands for end', 'and for end', 1.20000, 3);
INSERT INTO `test` VALUES (4, 'and for end', 'and for end', 3.60000, 2);
INSERT INTO `test` VALUES (5, 'for and end ', 'for and end', 3.50000, 6);
SET FOREIGN_KEY_CHECKS = 1;
直接上代码
1.前端页面效果
<!DOCTYPE html>
<html>
<head>
<title>mainfunction.html</title>
<meta charset="UTF-8">
<meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../assets/js/jquery.min.js"></script>
<style>
html,body{margin:0 auto;width:100%;height:100%;}
.item:hover{border:1px solid #c0c0c0;}
</style>
</head>
<body>
<div id="word" style="width:100%;height:20%;overflow-x:hidden;overflow-y:scroll;">单词</div>
<div id="wordArray" style="width:100%;height:20%;overflow-x:hidden;overflow-y:scroll;margin-top:20px;"></div>
<div id="wordList" style="width:100%;height:20%;overflow-x:hidden;overflow-y:scroll;margin-top:20px;"></div>
</body>
</html>
3、js代码
<script>
var serverUrl = "http://localhost:3885"
$(function(){
getTest();
});
function getTest(){
$.ajax({
url: serverUrl+"/Test/getWordList",
type: "POST",
contentType: "application/json;charset=UTF-8",
async:false,
timeout:5000, //5s
beforeSend:function(xhr){
xhr.setRequestHeader("Authorization",window.localStorage.getItem("token"));
},
success: function(result){
//alert(JSON.stringify(result.data));
var rlt = result.data;
var html = "<div style='width:100%;height:40px;line-height:40px;'>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>单词</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>浮点数</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>整数</div>"+
"</div>";
for(var i=0;i<rlt.length;i++){
html += "<div class='item' style='width:100%;height:40px;line-height:40px;'>"+
"<div onclick='getWord(this)' style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].keyword+"</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].floatNum+"</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].intNum+"</div>"+
"</div>";
}
$("#word").empty().append(html);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert("status:"+XMLHttpRequest.status+"\n readyState:"+XMLHttpRequest.readyState+"\n textStatus:"+textStatus);
}
});
function getWord(that){
var word = $(that).html();
var uri = "word="+word;
$.ajax({
url: serverUrl+"/Test/getWord",
type: "POST",
//contentType: "application/json;charset=UTF-8",
contentType: 'application/x-www-form-urlencoded',
async:false,
//data: JSON.stringify({
// "word": word
// }),
//datatype:"JSON",
data:uri,
timeout:5000, //5s
beforeSend:function(xhr){
xhr.setRequestHeader("Authorization",window.localStorage.getItem("token"));
},
success: function(result){
//alert(JSON.stringify(result.data));
var rlt = result.data;
var html = "<div style='width:100%;height:40px;line-height:40px;'>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>词汇总</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>浮点数</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>整数</div>"+
"</div>";
for(var i=0;i<rlt.length;i++){
html += "<div class='item' style='width:100%;height:40px;line-height:40px;'>"+
"<div onclick='searchMultiWord(this)' style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].keyword+"</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].floatNum+"</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].intNum+"</div>"+
"</div>";
}
$("#wordArray").empty().append(html);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert("status:"+XMLHttpRequest.status+"\n readyState:"+XMLHttpRequest.readyState+"\n textStatus:"+textStatus);
}
});
function searchMultiWord(that){
var word = $(that).html();
var uri = "word="+word;
$.ajax({
url: serverUrl+"/Test/searchMultiWord",
type: "POST",
//contentType: "application/json;charset=UTF-8",
contentType: 'application/x-www-form-urlencoded',
async:false,
//data: JSON.stringify({
// "word": word
// }),
//datatype:"JSON",
data:uri,
timeout:5000, //5s
beforeSend:function(xhr){
xhr.setRequestHeader("Authorization",window.localStorage.getItem("token"));
},
success: function(result){
//alert(JSON.stringify(result.data));
var rlt = result.data;
var html = "<div style='width:100%;height:40px;line-height:40px;'>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>词汇</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>浮点数</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;'>整数</div>"+
"</div>";
for(var i=0;i<rlt.length;i++){
html += "<div class='item' style='width:100%;height:40px;line-height:40px;'>"+
"<div style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].keyword+"</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].floatNum+"</div>"+
"<div style='display:inline;float:left;width:33%;text-align:center;height:40px;line-height:40px;'>"+rlt[i].intNum+"</div>"+
"</div>";
}
$("#wordList").empty().append(html);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert("status:"+XMLHttpRequest.status+"\n readyState:"+XMLHttpRequest.readyState+"\n textStatus:"+textStatus);
}
});
}
</script>
4、Java后台代码
/***************************************************************
* 功能:从数据库搜索所有词汇、词汇总,检索出单词,相同单词累加“浮点数”和“整数”
*
* */
@Override
public List<TestAnalysis> getWordList() {
// TODO Auto-generated method stub
List<Test> testList = testMapper.findAll();
List<TestAnalysis> anaList = new ArrayList<>();
List<String> wordList = new ArrayList<>();
for(Test one:testList) {
//判断已添加的数据中,是否有该单词
String[] words = one.get词汇().split(" ");
for(int i=0;i<words.length;i++) {
//处理以"s"结尾的单词
String currentWord = words[i];
if(currentWord.endsWith("s")) {
currentWord = currentWord.substring(0, (currentWord.length()-1));
}
if((wordList.size()!=0) && (wordList.contains(currentWord))) {
//在anaList,查找KeyWord等于words[i]的元素,累计"浮点数"和“整数”
TestAnalysis newRcd = new TestAnalysis();
TestAnalysis oldRcd = new TestAnalysis();
for(TestAnalysis rcd:anaList) {
if(rcd.getKeyword().equals(currentWord)) {
newRcd.setKeyword(currentWord);
newRcd.setFloatNum(((rcd.getFloatNum()*100000+one.get浮点()*100000))/100000);
newRcd.setIntNum(rcd.getIntNum()+one.get整数());
//预备删除元素赋值,在遍历外进行删除;
oldRcd = rcd;
}
}
//anaList中,删除老元素,添加新元素;
anaList.remove(oldRcd);
anaList.add(newRcd);
}else {
//定义新的TestAnalysis,赋值KeyWord、"浮点数"、“整数”,添加 anaList、添加KeyWord进入wordList
TestAnalysis record = new TestAnalysis();
record.setKeyword(currentWord);
record.setFloatNum(one.get浮点());
record.setIntNum(one.get整数());
anaList.add(record);
wordList.add(currentWord);
}
}
String[] words1 = one.get词汇总().split(" ");
for(int i=0;i<words1.length;i++) {
String currentWord2 = words1[i];
//处理以"s"结尾的单词
if(currentWord2.endsWith("s")) {
currentWord2 = currentWord2.substring(0, (currentWord2.length()-1));
}
if((wordList.size()!=0) && (wordList.contains(currentWord2))) {
//在anaList,查找KeyWord等于words[i]的元素,累计"浮点数"和“整数”
TestAnalysis newRcd = new TestAnalysis();
TestAnalysis oldRcd = new TestAnalysis();
for(TestAnalysis rcd:anaList) {
if(rcd.getKeyword().equals(currentWord2)) {
newRcd.setKeyword(currentWord2);
newRcd.setFloatNum(((rcd.getFloatNum()*100000+one.get浮点()*100000))/100000);
newRcd.setIntNum(rcd.getIntNum()+one.get整数());
//预备删除元素赋值,在遍历外进行删除;
oldRcd = rcd;
}
}
//anaList中,删除老元素,添加新元素;
anaList.remove(oldRcd);
anaList.add(newRcd);
}else {
//定义新的TestAnalysis,赋值KeyWord、"浮点数"、“整数”,添加 anaList、添加KeyWord进入wordList
TestAnalysis record = new TestAnalysis();
record.setKeyword(currentWord2);
record.setFloatNum(one.get浮点());
record.setIntNum(one.get整数());
anaList.add(record);
wordList.add(currentWord2);
}
}
}
return anaList;
}
/***************************************************************
* 功能:从数据库搜索所有词汇、词汇总,检索是否含有我word,含有累加“浮点数”和“整数”
*
* */
@Override
public List<TestAnalysis> getWord(String word) {
// TODO Auto-generated method stub
List<Test> testList = testMapper.findAll();
List<TestAnalysis> anaList = new ArrayList<>();
List<String> wordList = new ArrayList<>();
for(Test one:testList) {
String[] words1 = one.get词汇总().split(" ");
for(int i=0;i<words1.length;i++) {
String currentWord2 = words1[i];
//处理以"s"结尾的单词
if(currentWord2.endsWith("s")) { //以s结尾的单词需要再处理,此处只处理单词后面增加s的情况
currentWord2 = currentWord2.substring(0, (currentWord2.length()-1));
}
//词汇总中,只要含有word,就添加anaList、wordList
if(currentWord2.equals(word)) {
if(!wordList.contains(one.get词汇总())) {
wordList.add(one.get词汇总());
TestAnalysis record = new TestAnalysis();
record.setKeyword(one.get词汇总());
record.setFloatNum(one.get浮点());
record.setIntNum(one.get整数());
anaList.add(record);
wordList.add(currentWord2);
}else {
TestAnalysis newRcd = new TestAnalysis();
TestAnalysis oldRcd = new TestAnalysis();
for(TestAnalysis rcd:anaList) {
if(rcd.getKeyword().equals(one.get词汇总())) {
newRcd.setKeyword(one.get词汇总());
newRcd.setFloatNum(((rcd.getFloatNum()*100000+one.get浮点()*100000))/100000);
newRcd.setIntNum(rcd.getIntNum()+one.get整数());
//预备删除元素赋值,在遍历外进行删除;
oldRcd = rcd;
}
}
//anaList中,删除老元素,添加新元素;
anaList.remove(oldRcd);
anaList.add(newRcd);
}
}
}
}
return anaList;
}
/***************************************************************
* 功能:从数据库搜索所有词汇检索词汇总中字符出,含有累加“浮点数”和“整数”
*
* */
@Override
public List<TestAnalysis> searchMultiWord(String word) {
// TODO Auto-generated method stub
List<Test> testList = testMapper.findAll();
List<TestAnalysis> anaList = new ArrayList<>();
List<String> wordList = new ArrayList<>();
for(Test one:testList) {
//String[] words1 = one.get词汇().split(" ");
//1、直接比较两个字符串是否相等
String CH = one.get词汇().trim();
//2、删除“词汇”列中每个单词的末尾“s”,是否相等
String CHdeleteS = one.get词汇().replace("s ", " ").trim();
//3、同时删除“词汇”和“词汇中”每个单词的的末尾“s”,是否相等
String worddeleteS = word.replace("s ", " ").trim();
System.out.println("CHdeleteS:"+CHdeleteS);
if((CH.equals(word))||CHdeleteS.equals(word)||CHdeleteS.equals(worddeleteS)) {
if(!wordList.contains(one.get词汇())) {
wordList.add(one.get词汇());
TestAnalysis record = new TestAnalysis();
record.setKeyword(one.get词汇());
record.setFloatNum(one.get浮点());
record.setIntNum(one.get整数());
anaList.add(record);
}else {
TestAnalysis newRcd = new TestAnalysis();
TestAnalysis oldRcd = new TestAnalysis();
for(TestAnalysis rcd:anaList) {
if(rcd.getKeyword().equals(one.get词汇())) {
newRcd.setKeyword(one.get词汇());
newRcd.setFloatNum(((rcd.getFloatNum()*100000+one.get浮点()*100000))/100000);
newRcd.setIntNum(rcd.getIntNum()+one.get整数());
//预备删除元素赋值,在遍历外进行删除;
oldRcd = rcd;
}
}
//anaList中,删除老元素,添加新元素;
anaList.remove(oldRcd);
anaList.add(newRcd);
}
}
}
return anaList;
}
你的描述太不清晰了吧,没看懂这里点击展开是什么意思
参考gpt:
结合自己分析给你如下建议:
前端:您可以使用一些前端框架,如Vue.js、React.js、Angular.js等,来构建一个用户界面,让用户可以输入或上传文本,并显示词频的结果。
后台:您可以使用一些后台语言,如Python、Java、PHP等,来编写一个词频统计的程序,接收用户的文本,并对其进行分词、清洗、统计等操作,然后返回词频的结果。
为了帮助您更好地理解,我为您提供了一个用Python实现词频统计的简单代码,如下:
导入分词库
import jieba
定义一个词频统计的函数
def word_count(text): # 对文本进行分词 words = jieba.lcut(text) # 创建一个空字典,用于存储词频 counts = {} # 遍历分词结果,统计每个词出现的次数 for word in words: # 如果词长度大于1,并且不是停用词,则进行统计 if len(word) > 1 and word not in stop_words: # 如果字典中已经有这个词,则次数加一 if word in counts: counts[word] += 1 # 如果字典中没有这个词,则添加这个词,并将次数设为一 else: counts[word] = 1 # 返回字典类型的词频结果 return counts
定义一个停用词列表,用于过滤无意义的词
stop_words = [“的”, “了”, “是”, “我”, “你”, “他”, “她”, “它”, “我们”, “你们”, “他们”, “她们”, “它们”]
定义一个测试文本
text = “我爱北京天安门,天安门上太阳升。”
调用函数,得到词频结果
counts = word_count(text)
按照词频降序排序,并打印前十个高频词
sorted_counts = sorted(counts.items(), key=lambda x: x1, reverse=True) for i in range(10): word, count = sorted_counts[i] print(f"{word}: {count}")
要实现词频的统计,您可以使用Java编写后台代码来处理数据库中的数据,然后使用前端来展示结果。以下是一个基本的示例,展示了如何使用Java和Spring Boot作为后台,以及HTML和JavaScript作为前端来实现您的需求。
首先,您需要创建一个Spring Boot项目,并配置数据库连接。然后,您可以按照以下方式实现词频的统计:
// 创建一个实体类来映射数据库中的表
@Entity
@Table(name = "test")
public class TestEntity {
@Id
private int id;
private String 词汇;
private String 词汇总;
private double 浮点;
private int 整数;
// getters and setters
}
// 创建一个服务类来处理词频统计
@Service
public class WordFrequencyService {
@Autowired
private TestRepository testRepository;
public Map<String, Integer> calculateWordFrequency() {
List<TestEntity> entities = testRepository.findAll();
Map<String, Integer> wordFrequencyMap = new HashMap<>();
for (TestEntity entity : entities) {
String[] words = entity.get词汇().split("\\s+");
for (String word : words) {
wordFrequencyMap.put(word, wordFrequencyMap.getOrDefault(word, 0) + 1);
}
}
return wordFrequencyMap;
}
}
// 创建一个控制器类来处理前端请求
@RestController
public class WordFrequencyController {
@Autowired
private WordFrequencyService wordFrequencyService;
@GetMapping("/wordFrequency")
public Map<String, Integer> getWordFrequency() {
return wordFrequencyService.calculateWordFrequency();
}
}
<!-- 创建一个HTML页面来展示词频统计结果 -->
<!DOCTYPE html>
<html>
<head>
<title>词频统计</title>
</head>
<body>
<h1>词频统计结果</h1>
<div id="wordFrequencyResult"></div>
<script>
fetch('/wordFrequency')
.then(response => response.json())
.then(data => {
const resultDiv = document.getElementById('wordFrequencyResult');
for (const word in data) {
const wordCount = data[word];
const p = document.createElement('p');
p.textContent = `${word}: ${wordCount}`;
resultDiv.appendChild(p);
}
})
.catch(error => console.error('Error fetching data:', error));
</script>
</body>
</html>
请注意,上述代码是一个简化示例,您需要根据您的实际项目需求进行适当的调整和扩展。您可以使用您的数据库配置、依赖管理工具(如Maven或Gradle)来创建项目,然后将这些代码整合到您的项目中。
【相关推荐】
//添加学生功能
public boolean addStu(Stu s) {
//判断数组是否已满
if (index > stus.length - 1) {
return false;
}
stus[index++] = s;
return true;
}
你描述的不够清楚,具体的需求是啥,词频计算的规则是什么,数据来源是啥?前端需要如何展示?
有没有指定用什么框架
你是对词还是词组统计词频?有没有预定义的词库?还有对java框架有没有要求,需求尽量细化一下
要实现一个词频计算的应用,包括前端和后台,你可以按照以下步骤进行操作。我会为你提供一个简单的示例,涵盖前端和后台的代码。
前端部分:
HTML(index.html):
html
<!DOCTYPE html>
<html>
<head>
<title>Word Frequency Counter</title>
</head>
<body>
<h1>Word Frequency Counter</h1>
<textarea id="textInput" rows="10" cols="50"></textarea>
<button id="countButton">Count Words</button>
<h2>Word Frequencies:</h2>
<div id="wordFrequencies"></div>
<script src="script.js"></script>
</body>
</html>
后台部分:
Java(WordFrequencyCalculator.java):
java
import java.util.HashMap;
import java.util.Map;
public class WordFrequencyCalculator {
public static Map<String, Integer> calculateWordFrequency(String text) {
String[] words = text.split("\\s+");
Map<String, Integer> wordFrequencyMap = new HashMap<>();
for (String word : words) {
word = word.toLowerCase(); // Convert to lowercase for case-insensitive counting
wordFrequencyMap.put(word, wordFrequencyMap.getOrDefault(word, 0) + 1);
}
return wordFrequencyMap;
}
}
整合前后端:
Java(Main.java):
java
import java.util.Map;
public class Main {
public static void main(String[] args) {
// Simulated input from the frontend
String userInput = "This is a simple example. This is a test example.";
// Calculate word frequencies
Map<String, Integer> wordFrequencyMap = WordFrequencyCalculator.calculateWordFrequency(userInput);
// Display word frequencies
for (Map.Entry<String, Integer> entry : wordFrequencyMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
这个示例中,我们创建了一个简单的前端页面,允许用户输入文本,然后通过点击按钮来计算词频。在后台,我们创建了一个WordFrequencyCalculator类,它将文本拆分为单词并计算词频。在主类Main中,我们模拟了从前端获取的输入并显示计算得到的词频。
请注意,这只是一个简单的示例。在实际应用中,你可能需要更多的错误处理、界面设计和优化。另外,这个示例没有涉及到将前端和后台真正整合起来,你可能需要使用一些框架(如Spring Boot)来创建一个完整的应用
前台HTML+JS
后台:Springboot
具体代码需要根据具体需求,按项目结构完成
SELECT 词汇总, 词汇, COUNT(*) AS 频率, 浮点
FROM test
GROUP BY 词汇总, 词汇
ORDER BY 浮点 DESC;
还是不太清楚需求,方便重新描述一下吗?
实体类
@Entity
@Table(name = "test")
public class TestData {
@Id
private int id;
private String vocabulary;
// ... other fields, getters, setters
}
service
@Service
public class WordFrequencyService {
@Autowired
private TestDataRepository testDataRepository;
public Map<String, Integer> calculateWordFrequency() {
List<TestData> testDataList = testDataRepository.findAll();
Map<String, Integer> wordFrequencyMap = new HashMap<>();
for (TestData testData : testDataList) {
String vocabulary = testData.getVocabulary();
String[] words = vocabulary.split(" "); // split words by space
for (String word : words) {
wordFrequencyMap.put(word, wordFrequencyMap.getOrDefault(word, 0) + 1);
}
}
return wordFrequencyMap;
}
}
前端
<!DOCTYPE html>
<html>
<head>
<title>Word Frequency Calculator</title>
</head>
<body>
<h1>Word Frequency Calculator</h1>
<div id="result"></div>
<script>
fetch('/calculateWordFrequency') // Call the backend service
.then(response => response.json())
.then(data => {
let resultDiv = document.getElementById('result');
for (let word in data) {
resultDiv.innerHTML += `${word}: ${data[word]}<br>`;
}
});
</script>
</body>
</html>
控制器
@RestController
public class WordFrequencyController {
@Autowired
private WordFrequencyService wordFrequencyService;
@GetMapping("/calculateWordFrequency")
public ResponseEntity<Map<String, Integer>> calculateWordFrequency() {
Map<String, Integer> wordFrequencyMap = wordFrequencyService.calculateWordFrequency();
return ResponseEntity.ok(wordFrequencyMap);
}
}