好的,我有以下代码来训练OpenNLP的NER标识符
FileReader fileReader = new FileReader("train.txt");
ObjectStream fileStream = new PlainTextByLineStream(fileReader);
ObjectStream sampleStream = new NameSampleDataStream(fileStream);
TokenNameFinderModel model = NameFinderME.train("pt-br", "train", sampleStream, Collections.<String, Object>emptyMap());
nfm = new NameFinderME(model);
Run Code Online (Sandbox Code Playgroud)
我不知道如果缺少某些东西我是否做错了,但分类不起作用.我假设train.txt错了.
发生的错误是所有令牌都只分类为一种类型.
我的train.txt数据类似于以下示例,但具有更多的条目变化和数量.另一件事是我每次都是从文本中逐字逐句地分类,而不是所有的标记.
<START:distance> 8000m <END>
<START:temperature> 100ºC <END>
<START:weight> 50kg <END>
<START:name> Renato <END>
Run Code Online (Sandbox Code Playgroud)
有人可以证明我做错了吗?
我想知道是否可以在PostgreSQL中的字段中存储多个值.
我有一个Token
用列调用的表id
,text
和category
.category
是一个多值领域.是否有必要为它创建一个单独的表,还是有办法将其存储在Token
表中?
我正在使用ExecutorService来执行一些Callables,但是线程的名称就像fixed-pool-1-thread-1.
我如何更改线程的名称?如果不可能,还有另一种执行Callables的方法,我可以设置threadS的名称吗?
我正在开发一个经常使用系统时间的系统,因为Delayed
界面.
什么是从系统中获取时间的紧固方式?
目前我Calendar.getInstance().getTimeInMillis()
每次都需要花时间使用,但我不知道是否有更快的方法.
我在数据库中有这个过程:
CREATE OR REPLACE FUNCTION replacePageRelevance(id INT, value REAL) RETURNS VOID AS $$
BEGIN
INSERT INTO pageRelevance VALUES (id,value);
EXCEPTION WHEN unique_violation THEN
UPDATE pageRelevance SET relevance = value WHERE pageId = id;
END
$$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
这段代码调用了这个函数:
private final String PAGE_RELEVANCE_SQL = "SELECT replacePageRelevance(?,?::REAL)";
try (CallableStatement cstm = conn.prepareCall(PAGE_RELEVANCE_SQL)) {
for (Map.Entry<Integer, Double> entry : weightMap.entrySet()) {
cstm.setInt(1, entry.getKey());
cstm.setDouble(2, entry.getValue());
cstm.addBatch();
}
cstm.executeBatch();
} catch (SQLException e) {
LOGGER.error("Error discovering pages relevance: " + e.getNextException());
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行批处理时,会在表中插入或替换值,但在此之后,我收到一个异常通知 …
我在PostgreSQL中有一个表,其中列是文本.我需要一个库或工具,可以识别每个文本的语言以用于测试目的.
不需要PostgreSQL代码,因为我在安装语言时遇到问题,但是任何可以连接到数据库,检索文本并识别它的语言都是受欢迎的.
我Lingua::Identify
在Perl脚本中的答案中使用了建议,它有效,但结果不准确.
我想要识别的文本来自网络,大多数都是葡萄牙语,但是Lingua::Identify
将法语,意大利语和西班牙语分类为类似的语言.
我需要更精确的东西.
我添加了java
和r
标签,因为我在系统中使用的语言和使用它们的解决方案将很容易实现,但欢迎使用任何语言的解决方案.
我做了一个关于标点符号和正则表达式的问题,但这令人困惑.
我有这样的文字:
String text = "wor.d1, :word2. wo,rd3? word4!";
Run Code Online (Sandbox Code Playgroud)
我这样做:
String parts[] = text.split(" ");
Run Code Online (Sandbox Code Playgroud)
我有这个:
wor.d1, | :word2. | wor,d3? | word4!;
Run Code Online (Sandbox Code Playgroud)
有这个我需要做什么?(将符号保留在边界处,但仅限于我指定的:.,!?:
,而不是全部).
wor,d1 | , | : | word2 | . | wor,d3 | ? | word4 | !
Run Code Online (Sandbox Code Playgroud)
我用这些正则表达式获得了一些好的结果,但它在一个单词开头的标点符号的所有分割之前给出了一个空的char.
有一种方法可以在一开始没有这个空的char?
这个正则表达式是好的还是有更简单的方法?
public static final String PUNCTUATION_SEPARATOR =
"("
+ "("
+ "(?=^[\"'!?.,;:(){}\\[\\]]+)"
+ "|"
+ "(?<=^[\"'!?.,;:(){}\\[\\]]+)"
+ ")"
+ "|"
+ "("
+ "(?=[\"'!?.,;:(){}\\[\\]]+($|\n))"
+ "|"
+ "(?<=[\"'!?.,;:(){}\\[\\]]+($|\n))"
+ ")"
+ ")";
Run Code Online (Sandbox Code Playgroud) 我正在尝试在表中插入一个数组,但我需要将列表转换为SQL数组类型.我正在使用该Connection#createArrayOf()
方法,但我得到了一个例外.
我需要传递一个类型名称,但我不知道这是什么,我总是得到一个例外.该数组来自VARCHAR.
我怎么解决这个插入数组?
代码
Object[] array = new Object[token.getCategories().size()];
array = token.getCategories().toArray();
pstmTokenInsert.setArray(1, conn.createArrayOf("VARCHAR", array));
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪
org.postgresql.util.PSQLException: Could not find array type for data type VARCHAR
at org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf(AbstractJdbc4Connection.java:73)
at org.postgresql.jdbc4.Jdbc4Connection.createArrayOf(Jdbc4Connection.java:21)
at org.apache.commons.dbcp.DelegatingConnection.createArrayOf(DelegatingConnection.java:560)
at br.ifsp.da.data.TokenDAO.insertTokens(TokenDAO.java:37)
at br.ifsp.da.data.ProcessedPageInserter.loopInsertion(ProcessedPageInserter.java:44)
at br.ifsp.da.data.ProcessedPageInserter.call(ProcessedPageInserter.java:27)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud) 我的数据库中有一个大表,文本顺序中有很多来自各种文本的单词.我想找到一些单词一起出现的次数/频率.
示例:假设我在许多文本中都有这4个单词:United | States | of | America
.我会得到结果:
美国:50
美国:45
美利坚合众国:40
(这只是一个包含4个单词的示例,但可以使用少于4个单词).
有一些算法可以做到这一点或类似于此?
编辑:欢迎使用一些显示如何操作的R或SQL代码.我需要一个我需要做的实际例子.
表结构
我有两个表:Token
有id
和text
.文本是,UNIQUE
并且此表中的每个入口代表不同的单词.
TextBlockHasToken
是保持文本顺序的表.每行代表文本中的一个单词.
它textblockid
有令牌所属的文本块.sentence
这是令position
牌的句子,tokenid
即句子内的令牌位置,也就是令牌表引用.
我看到了有关库的其他问题,可以使用Javascript创建时间表.有一些库,但它们创建水平时间轴,但我想创建一个垂直.
那么,哪个是创建垂直时间线的好库呢?
我不希望像Facebook这样的时间表有帖子,但是一个简单的时间表有多年和像这个问题的项目,但垂直而不是横向.
java ×7
postgresql ×4
arrays ×2
r ×2
sql ×2
algorithm ×1
calendar ×1
charts ×1
javascript ×1
jquery ×1
multivalue ×1
nlp ×1
opennlp ×1
plpgsql ×1
punctuation ×1
regex ×1
separator ×1
time ×1
timeline ×1
types ×1