-
2021-02-28 15:14:18
展开全部
能力有限用个最笨的办法了62616964757a686964616fe59b9ee7ad9431333365653163public String matchName(String filePath){
BufferedReader reader = new BufferedReader(new FileReader(filePath));
// 读取文本
StringBuffer sb = new StringBuffer();
String str;
while (null!=(str = reader.readLine())) {
sb.append(str);
sb.append("\r\n");
}
String rex = "项目名称";
String totalStr = sb.toString();
// 获取rex第一次出现的位置
int first = totalStr.indexOf(rex);
// 从该位置截取30长度的字符串
String result = totalStr.substring(first, first+30);
// 返回第一行
return result.split("\r\n")[0];
}
更多相关内容 -
提取Java关键字
2021-02-27 22:41:25展开全部我写了个Keywords.java类,代62616964757a686964616fe78988e69d8331333262356132码如下:*************************************************************importjava.awt.BorderLayout;importjava.awt....展开全部
我写了个Keywords.java类,代62616964757a686964616fe78988e69d8331333262356132码如下:
*************************************************************
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
public class Keywords extends JFrame {
String[] keywords = { "abstract", "boolean", "break", "byte", "case",
"catch", "char", "class", "continue", "default", "do", "double",
"else", "extends", "false", "final", "finally", "float", "for",
"if", "implements", "import", "instanceof", "int", "interface",
"long", "native", "new", "null", "package", "private", "protected",
"public", "return", "short", "static", "super", "switch",
"synchronized", "this", "throw", "throws", "transient", "true",
"try", "void", "volatile", "while", "const", "goto" };
JTextArea text;
JTextArea result;
public Keywords() {
this.setTitle("计算关键字数");
// 文本框
text = new JTextArea(6, 50);
text.setLineWrap(true);
JScrollPane textScroll = new JScrollPane(text);
text.setBorder(BorderFactory.createBevelBorder(1));
JPanel textPanel = new JPanel(new BorderLayout());
textPanel.setBorder(BorderFactory.createTitledBorder("导入的文本"));
textPanel.add(textScroll);
// 结果框
result = new JTextArea(6, 50);
result.setLineWrap(true);
JScrollPane resultScroll = new JScrollPane(result);
result.setBorder(BorderFactory.createBevelBorder(1));
JPanel resultPanel = new JPanel(new BorderLayout());
resultPanel.setBorder(BorderFactory.createTitledBorder("计算结果"));
resultPanel.add(resultScroll);
// 导入文本和结果框
JPanel allPanel = new JPanel();
allPanel.setLayout(new GridLayout(2, 1));
allPanel.add(textPanel);
allPanel.add(resultPanel);
// 按钮
JButton impButton = new JButton("导入文本");
JButton calcButton = new JButton("计算关键字数");
JPanel buttonPanel = new JPanel(new FlowLayout());
buttonPanel.add(impButton);
buttonPanel.add(calcButton);
// 添加
this.add(allPanel, BorderLayout.CENTER);
this.add(buttonPanel, BorderLayout.SOUTH);
// this.setSize(400, 300);
this.pack();
Toolkit tool = Toolkit.getDefaultToolkit();
Dimension screen = tool.getScreenSize();
this.setLocation(screen.width / 2 - this.getWidth() / 2, screen.height
/ 2 - this.getHeight() / 2);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 导入文本
impButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
writeText();
}
});
// 计算关键字数
calcButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// for(String ss : s) {
// System.out.println(ss);
// }
String[] start = text.getText().trim().split("\n");
System.out.println("start: " + start.length);
// String[] rets = new String[start.length];
StringBuffer ret = new StringBuffer();
for (int i = 0; i
StringTokenizer st = new StringTokenizer(start[i]);
int n = 0;
while (st.hasMoreTokens()) {
String comp = st.nextToken();
for (String s : keywords) {
if (s.equals(comp)) {
n++;
if (n == 1) {
ret.append(i + ": ");
ret.append(s);
} else {
ret.append(", " + s);
}
}
}
}
if (n != 0) {
ret.append("\n");
}
}
result.setText(ret.toString().trim());
}
});
}
// 导入文本
public void writeText() {
try {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(this);
File file = chooser.getSelectedFile();
BufferedReader br = new BufferedReader(new FileReader(file));
String s;
text.setText("");
while ((s = br.readLine()) != null) {
text.append(s + "\n");
}
text.setText(text.getText().trim());
System.out.println(text.getText());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
new Keywords();
}
}
*************************************************************
运行结果如下:
-
java提取文章关键字
2017-11-24 13:31:49java提取文章关键字,可随意更改提取关键字的个数、规则,内置jar包,下载即可运行 -
关键字提取
2018-02-22 11:46:23java文章关键字提取 java文章关键字提取 java文章关键字提取 重要的事件说三遍 -
Java编程实现提取文章中关键字的方法
2020-09-03 05:02:44主要介绍了Java编程实现提取文章中关键字的方法,较为详细的分析了Java提取文章关键字的原理与具体实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下 -
文本关键字提取
2018-05-21 16:30:33文本关键字提取,需要自建知识库,采用文本处理等方式 -
提取关键词(Java版)
2015-08-18 14:58:06Java编写的提取一篇文章中的关键词的程序,使用TF-IDF算法提取文章中的关键词,使用Java原生sdk实现,可以运行。 -
Java实验-03 Java 字符串处理提取关键字,方法,变量,操作符
2021-10-29 14:18:37要求对一个 Java 程序进行简单的词法分析,找出其中用到的关键字、变量类型、变量名、方 法名以及操作运算符,并分别打印出来。 注意 考虑如果 (、{ 字符与关键字或变量名相连的情况下该怎么处理,尽可能将代码写...实验要求
要求对一个 Java 程序进行简单的词法分析,找出其中用到的关键字、变量类型、变量名、方
法名以及操作运算符,并分别打印出来。
注意
考虑如果 (、{ 字符与关键字或变量名相连的情况下该怎么处理,尽可能将代码写完善。挺简单的,用正则一下就出来了,直接放代码吧
基本上都考虑到了吧qaq,方法的话默认大家都用public了,不考虑其他情况package exp03; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CodeAnalysis { public static void main(String[] args) { String fileName = "C:\\Users\\CrazyBin\\IdeaProjects\\Exp03\\src\\exp03\\codeDemo"; String regexKeyWords = "abstract|assert|boolean|break|case|catch|" + "class|const|continue|default|do|double|else" + "|extends|false|final|finally|for|goto|if|implements|" + "import|instanceof|interface|native|new|null|" + "package|privat|protected|public|return|static|" + "strictfp|super|switch|synchronized|this|throw|throws|true|" + "transient|try|void|volatile|while"; String regexVariableType = "int|double|float|enum|long|byte|boolean|char|String|short"; String regexMethod = "(public\\s+)?(static\\s+)?\\w+(\\[\\])?\\s+\\w+(\\s)?\\((\\w+(\\[\\])?\\s+\\w+(\\s+)?\\,)*(\\w+(\\[\\])?\\s+\\w+)?(\\s+)*\\)\\s{1}"; String regexVariable = "(private\\s+)?(static\\s+)?(int|double|float|enum|long|byte|boolean|char|String|short)(\\[\\])?\\s+\\S"; String regexOperator = "(\\+|\\-|\\*|\\/)"; StringBuilder stringBuilder = new StringBuilder(); try { FileInputStream inputStream = new FileInputStream(fileName); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); int temp = 0; while (temp != -1) { temp = bufferedInputStream.read(); stringBuilder.append((char) temp); } System.err.println("程序的关键字,变量类型,方法,变量名,操作符统计如下:"); bufferedInputStream.close(); inputStream.close(); search(regexKeyWords,stringBuilder); search(regexVariableType,stringBuilder); search(regexMethod,stringBuilder); search(regexVariable,stringBuilder); search(regexOperator,stringBuilder); } catch (Exception e) { e.printStackTrace(); } } public static void search(String regex,StringBuilder stringBuilder) { Pattern pattern=Pattern.compile(regex); Matcher matcher=pattern.matcher(stringBuilder); while(matcher.find()) { System.out.println(matcher.group()); } } }
运行截图
截了一部分
-
java统计关键字个数
2018-08-03 10:39:57通过args传参,读取文件,统计java代码中的关键字个数 -
word分词器java源码-RAKE-Java:快速自动关键字提取框架(RAKE)的Java实现
2021-06-05 22:16:36快速自动关键字提取 (RAKE) 算法的 Java 8 实现,如:Rose, S.、Engel, D.、Cramer, N. 和 Cowley, W. (2010) 中所述。 从单个文档中自动提取关键字。 在 MW Berry & J. Kogan(编辑),文本挖掘:理论和应用:John ... -
rake:用于快速自动关键字提取(RAKE)的Java库
2021-01-31 16:54:06快速自动关键字提取(RAKE) RAKE是一种算法,用于从文档中提取与文档内容具有高度相关性或重要性的关键字(从技术上讲是短语,但我不质疑科学文献)。 例如,文本中的前五个重要关键字: 线性约束系统在自然数集... -
maui-2:Java中基于维基百科的关键字提取工具
2021-06-06 19:57:38增加了关键字提取 Java API。 原来的只有命令行工具。 ##用法 ###Preparing Wikipedia Miner Maui 2.0 依赖于 ,这需要用户建立维基百科摘要数据库。 关于如何设置 Wikipedia Miner 1.2 的说明位于 。 如果您... -
中文分词+关键字提取
2017-10-02 21:07:561:中文分词 2:词频统计 3:罗列出要自动提取的关键字 ---------------------------------------- 具有60 万字/秒的高速处理能力。 -
JAVA淘宝关键字提取
2013-01-08 15:30:52淘宝关键字提取 from 天猫大全 -
TextRank算法提取关键词的Java实现
2016-10-26 10:31:34TextRank算法提取关键词的Java实现http://www.hankcs.com/nlp/textrank-algorithm-to-extract-the-keywords-java-implementation.html
谈起自动摘要算法,常见的并且最易实现的当属TF-IDF,但是感觉TF-IDF效果一般,不如TextRank好。
TextRank是在Google的PageRank算法启发下,针对文本里的句子设计的权重算法,目标是自动摘要。它利用投票的原理,让每一个单词给它的邻居(术语称窗口)投赞成票,票的权重取决于自己的票数。这是一个“先有鸡还是先有蛋”的悖论,PageRank采用矩阵迭代收敛的方式解决了这个悖论。TextRank也不例外:
PageRank的计算公式:
正规的TextRank公式
正规的TextRank公式在PageRank的公式的基础上,引入了边的权值的概念,代表两个句子的相似度。
但是很明显我只想计算关键字,如果把一个单词视为一个句子的话,那么所有句子(单词)构成的边的权重都是0(没有交集,没有相似性),所以分子分母的权值w约掉了,算法退化为PageRank。所以说,这里称关键字提取算法为PageRank也不为过。
另外,如果你想提取关键句(自动摘要)的话,请参考姊妹篇《TextRank算法自动摘要的Java实现》。
TextRank的Java实现
先看看测试数据:
程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类。
我取出了百度百科关于“程序员”的定义作为测试用例,很明显,这段定义的关键字应当是“程序员”并且“程序员”的得分应当最高。
首先对这句话分词,这里可以借助各种分词项目,比如HanLP分词,得出分词结果:
[程序员/n, (, 英文/nz, programmer/en, ), 是/v, 从事/v, 程序/n, 开发/v, 、/w, 维护/v, 的/uj, 专业/n, 人员/n, 。/w, 一般/a, 将/d, 程序员/n, 分为/v, 程序/n, 设计/vn, 人员/n, 和/c, 程序/n, 编码/n, 人员/n, ,/w, 但/c, 两者/r, 的/uj, 界限/n, 并/c, 不/d, 非常/d, 清楚/a, ,/w, 特别/d, 是/v, 在/p, 中国/ns, 。/w, 软件/n, 从业/b, 人员/n, 分为/v, 初级/b, 程序员/n, 、/w, 高级/a, 程序员/n, 、/w, 系统/n, 分析员/n, 和/c, 项目/n, 经理/n, 四/m, 大/a, 类/q, 。/w]
然后去掉里面的停用词,这里我去掉了标点符号、常用词、以及“名词、动词、形容词、副词之外的词”。得出实际有用的词语:
[程序员, 英文, 程序, 开发, 维护, 专业, 人员, 程序员, 分为, 程序, 设计, 人员, 程序, 编码, 人员, 界限, 特别, 中国, 软件, 人员, 分为, 程序员, 高级, 程序员, 系统, 分析员, 项目, 经理]
之后建立两个大小为5的窗口,每个单词将票投给它身前身后距离5以内的单词:
{开发=[专业, 程序员, 维护, 英文, 程序, 人员],
软件=[程序员, 分为, 界限, 高级, 中国, 特别, 人员],
程序员=[开发, 软件, 分析员, 维护, 系统, 项目, 经理, 分为, 英文, 程序, 专业, 设计, 高级, 人员, 中国],
分析员=[程序员, 系统, 项目, 经理, 高级],
维护=[专业, 开发, 程序员, 分为, 英文, 程序, 人员],
系统=[程序员, 分析员, 项目, 经理, 分为, 高级],
项目=[程序员, 分析员, 系统, 经理, 高级],
经理=[程序员, 分析员, 系统, 项目],
分为=[专业, 软件, 设计, 程序员, 维护, 系统, 高级, 程序, 中国, 特别, 人员],
英文=[专业, 开发, 程序员, 维护, 程序],
程序=[专业, 开发, 设计, 程序员, 编码, 维护, 界限, 分为, 英文, 特别, 人员],
特别=[软件, 编码, 分为, 界限, 程序, 中国, 人员],
专业=[开发, 程序员, 维护, 分为, 英文, 程序, 人员],
设计=[程序员, 编码, 分为, 程序, 人员],
编码=[设计, 界限, 程序, 中国, 特别, 人员],
界限=[软件, 编码, 程序, 中国, 特别, 人员],
高级=[程序员, 软件, 分析员, 系统, 项目, 分为, 人员],
中国=[程序员, 软件, 编码, 分为, 界限, 特别, 人员],
人员=[开发, 程序员, 软件, 维护, 分为, 程序, 特别, 专业, 设计, 编码, 界限, 高级, 中国]}
然后开始迭代投票:
- for (int i = 0; i < max_iter; ++i)
- {
- Map<String, Float> m = new HashMap<String, Float>();
- float max_diff = 0;
- for (Map.Entry<String, Set<String>> entry : words.entrySet())
- {
- String key = entry.getKey();
- Set<String> value = entry.getValue();
- m.put(key, 1 - d);
- for (String other : value)
- {
- int size = words.get(other).size();
- if (key.equals(other) || size == 0) continue;
- m.put(key, m.get(key) + d / size * (score.get(other) == null ? 0 : score.get(other)));
- }
- max_diff = Math.max(max_diff, Math.abs(m.get(key) - (score.get(key) == null ? 0 : score.get(key))));
- }
- score = m;
- if (max_diff <= min_diff) break;
- }
排序后的投票结果:
[程序员=1.9249977,
人员=1.6290349,
分为=1.4027836,
程序=1.4025855,
高级=0.9747374,
软件=0.93525416,
中国=0.93414587,
特别=0.93352026,
维护=0.9321688,
专业=0.9321688,
系统=0.885048,
编码=0.82671607,
界限=0.82206935,
开发=0.82074183,
分析员=0.77101076,
项目=0.77101076,
英文=0.7098714,
设计=0.6992446,
经理=0.64640945]
程序员果然荣登榜首,并且分数也有区分度,嗯,勉勉强强。
开源项目地址
本文代码已集成到HanLP中开源:http://www.hankcs.com/nlp/hanlp.html
目前能够提供分词、词性标注、命名实体识别、关键字提取、短语提取、自动摘要、自动推荐,依存关系、句法树等功能。
-
3种经典查找算法(Java)
2021-04-22 18:09:55/*** 二分查找** @param arr 数组* @param key 待查找关键字* @return 返回折半下标, -1表示不存在该关键字*/public static int binarySearch(int[] arr, int key) {int left = 0, right = arr.length - 1, mid;... -
java爬虫并提取关键字实现
2018-04-26 16:39:17利用java实现爬虫功能,可以爬取新闻网站等,并可以进行敏感词的提取 -
dkpro-keyphrases:DKPro关键字提取API
2021-05-18 13:31:55DKPro关键字提取API DKPro密钥短语是基于Apache UIMA Framework和DKPro Core提取密钥短语的软件组件的集合。 该项目由德国达姆施塔特工业大学的无处不在的知识处理实验室(UKP)发起,由Iryna Gurevych博士主持。 ... -
获取所有Java保留关键字的列表
2021-03-06 05:50:44从axis.apache.org起基本上,对关键字进行预排序并将其存储在一个数组中,并在关键字上使用Arrays.binarySearch以获得good’ol O(logn)复杂度import java.util.Arrays;public class MainDemo {static final String ... -
Java关键字使用:private 关键字
2020-03-16 10:17:43private关键字作用: 在这里不用官方的话来解释,说简单一点就是,当你设置了private 变量,你需要注意两点: 你可以对类中的属性进行更加精确、细化的限制 在类 → 对象实例化实现的时候要注意使用一对setter 和 ... -
文本关键词提取算法总结
2021-03-13 00:29:441.TF-IDF昨天给大家演示简单的文本聚类,但要给每个聚类再提取一两个关键词用于表示该聚类。我们还是用TFIDF算法来做,因为这是比较简单的提取特征算法,不过这里的TF是指某词在本聚类内所有文章的词频,而不是本... -
java PDF关键字定位
2017-12-14 16:11:47java PDF关键字定位,所用jar为itextpdf-5.5.6.jar,jar自己去下载,这里只提供定位方式 -
word源码java-jcseg:Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,...
2021-06-05 22:30:33Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同时提供了最新版本的... -
jieba分词器包含关键词提取(java版)
2019-05-07 11:48:28jieba分词器包含关键词提取(java版,可以使用scala调用) -
POS-Tagging-for-KeyWord-Extraction:关键字提取
2021-04-27 18:53:21一种使用斯坦福大学自然语言处理对数线性POS标记从任何句子中提取关键字的算法 我已经在Java中使用了Stanford的(自然语言处理)对数线性POS标记器来处理.xml文件并提取<title> ..... </ title>标记中... -
java获取文章中的关键字
2022-02-25 17:55:02import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; public class SensitiveFilterService { private Map sensitiveWordMap = null; // 最小匹配规则 public... -
PDF大文件按关键字分页提取功能
2019-10-17 14:41:12PDF大文件按关键字分页提取功能,PDF大文件按关键字分页提取功能,PDF大文件按关键字分页提取功能PDF大文件按关键字分页提取功能 -
java关键字abstract
2021-03-10 03:29:23在java中我们中abstract关键字来表达抽象。举个例子:我们说车子都可以跑(run)。但有几个轮子,怎么跑,对于不同的车有不同的结果。自行车需要人踩着跑,汽车发动机推动跑等等,那么我们可以车表达为抽象类。/*** ... -
三、java中的关键字和标识符、注释(包括提取注释文档)
2021-01-29 19:11:17java中的关键字和标识符、注释一、关键字1、定义2、常用的标识符二、关键字1、定义2、组成规则3、注意事项4、驼峰规则(业界建议使用命名规范)三、注释1. 注释的概念2. 注释的形式 一、关键字 1、定义 Java内置的、...