假设我有一堂课
public class c1 {
public static ArrayList<String> list = new ArrayList<String>();
public c1() {
for (int i = 0; i < 5; i++) { //The size of the ArrayList is now 5
list.add("a");
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我在另一个类中访问相同的ArrayList,我将得到一个SIZE = 0的列表.
public class c2 {
public c2() {
System.out.println("c1.list.size() = " + c1.list.size()); //Prints 0
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?如果变量是静态的,那么为什么要为类c2生成新的列表?如果我在另一个类中访问它,如何确保获得相同的ArrayList?
/ ****修改后的代码******** /
public class c1 {
public static ArrayList<String> list = new ArrayList<String>();
public static …Run Code Online (Sandbox Code Playgroud) 我尝试过许多 NER 工具(OpenNLP、Stanford NER、LingPipe、Dbpedia Spotlight 等)。
但一直让我望而却步的是基于地名录/字典的 NER 系统,其中我的自由文本与预定义的实体名称列表相匹配,并返回潜在的匹配项。
通过这种方式,我可以拥有各种列表,例如 PERSON、ORGANIZATION 等。我可以动态更改列表并获得不同的提取。这将极大地减少训练时间(因为它们中的大多数基于最大熵模型,因此它们通常包括标记大型数据集、训练模型等)。
我使用 OpenNLP POS 标记器构建了一个非常粗略的基于地名词典的 NER 系统,我曾经从中取出所有专有名词 (NP),然后在从我的列表中创建的 Lucene 索引中查找它们。然而,这给了我很多误报。例如。如果我的 lucene 索引有“Samsung Electronics”并且我的 POS 标记器给我“Electronics”作为 NP,我的方法会返回“Samsung Electronics”,因为我正在做部分匹配。
我也读过人们谈论使用地名词典作为 CRF 算法中的一个特征。但我永远无法理解这种方法。
你们中的任何人都可以指导我采用一种清晰而可靠的方法,在地名词典和词典上建立 NER 吗?
#include <iostream>
using namespace std;
class base {
public:
int bval;
base(){bval=0;}
};
class deri:public base {
public:
int dval;
deri(){dval=1;}
};
void SomeFunc(base*arr,int size) {
for(int i=0;i<size;i++,arr++) {
cout<<arr->bval;
}
cout<<endl;
}
int main() {
base BaseArr[5];
SomeFunc(BaseArr,5);
deri DeriArr[5];
SomeFunc(DeriArr,5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么输出以上代码呢?
00000
01010
当我写作
SomeFunc(DeriArr,5);
Run Code Online (Sandbox Code Playgroud)
怎么了?基指针如何处理派生对象?