Có ai biết tìm một chút cách sử dụng chú thích dbpedia trong java hoặc scala không? Hoặc bất cứ ai có thể giải thích cách nó được thực hiện? Tôi không thể tìm thấy bất kỳ thông tin nào về việc này ...sử dụng chú thích dbpedia trong java hoặc scala
Trả lời
Trang điểm DBpedia wiki sẽ là một nơi tốt để bắt đầu.
Và tôi tin rằng trang installation đã liệt kê các cách phổ biến nhất (sử dụng bình, hoặc thiết lập dịch vụ web) để sử dụng ứng dụng.
Hướng dẫn này bao gồm hướng dẫn trên using the Java/Scala API bằng cài đặt của riêng bạn hoặc gọi cho Dịch vụ web.
Có một số dữ liệu bổ sung cần thiết để tải xuống để chạy máy chủ của riêng bạn cho dịch vụ đầy đủ, thời gian tốt để pha cà phê cho chính bạn.
bạn cần tải xuống chú thích dbpedia (tệp jar) sau đó bạn có thể sử dụng hai lớp tiếp theo (tác giả pablomendes) tôi chỉ thực hiện một số thay đổi.
public class db extends AnnotationClient {
//private final static String API_URL = "http://jodaiber.dyndns.org:2222/";
private static String API_URL = "http://spotlight.dbpedia.org:80/";
private static double CONFIDENCE = 0.0;
private static int SUPPORT = 0;
private static String powered_by ="non";
private static String spotter ="CoOccurrenceBasedSelector";//"LingPipeSpotter"=Annotate all spots
//AtLeastOneNounSelector"=No verbs and adjs.
//"CoOccurrenceBasedSelector" =No 'common words'
//"NESpotter"=Only Per.,Org.,Loc.
private static String disambiguator ="Default";//Default ;Occurrences=Occurrence-centric;Document=Document-centric
private static String showScores ="yes";
@SuppressWarnings("static-access")
public void configiration(double CONFIDENCE,int SUPPORT,
String powered_by,String spotter,String disambiguator,String showScores){
this.CONFIDENCE=CONFIDENCE;
this.SUPPORT=SUPPORT;
this.powered_by=powered_by;
this.spotter=spotter;
this.disambiguator=disambiguator;
this.showScores=showScores;
}
public List<DBpediaResource> extract(Text text) throws AnnotationException {
LOG.info("Querying API.");
String spotlightResponse;
try {
String Query=API_URL + "rest/annotate/?" +
"confidence=" + CONFIDENCE
+ "&support=" + SUPPORT
+ "&spotter=" + spotter
+ "&disambiguator=" + disambiguator
+ "&showScores=" + showScores
+ "&powered_by=" + powered_by
+ "&text=" + URLEncoder.encode(text.text(), "utf-8");
LOG.info(Query);
GetMethod getMethod = new GetMethod(Query);
getMethod.addRequestHeader(new Header("Accept", "application/json"));
spotlightResponse = request(getMethod);
} catch (UnsupportedEncodingException e) {
throw new AnnotationException("Could not encode text.", e);
}
assert spotlightResponse != null;
JSONObject resultJSON = null;
JSONArray entities = null;
try {
resultJSON = new JSONObject(spotlightResponse);
entities = resultJSON.getJSONArray("Resources");
} catch (JSONException e) {
//throw new AnnotationException("Received invalid response from DBpedia Spotlight API.");
}
LinkedList<DBpediaResource> resources = new LinkedList<DBpediaResource>();
if(entities!=null)
for(int i = 0; i < entities.length(); i++) {
try {
JSONObject entity = entities.getJSONObject(i);
resources.add(
new DBpediaResource(entity.getString("@URI"),
Integer.parseInt(entity.getString("@support"))));
} catch (JSONException e) {
LOG.error("JSON exception "+e);
}
}
return resources;
}
}
lớp thứ hai
/**
* @author pablomendes
*/
public abstract class AnnotationClient {
public Logger LOG = Logger.getLogger(this.getClass());
private List<String> RES = new ArrayList<String>();
// Create an instance of HttpClient.
private static HttpClient client = new HttpClient();
public List<String> getResu(){
return RES;
}
public String request(HttpMethod method) throws AnnotationException {
String response = null;
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
try {
// Execute the method.
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
LOG.error("Method failed: " + method.getStatusLine());
}
// Read the response body.
byte[] responseBody = method.getResponseBody(); //TODO Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
response = new String(responseBody);
} catch (HttpException e) {
LOG.error("Fatal protocol violation: " + e.getMessage());
throw new AnnotationException("Protocol error executing HTTP request.",e);
} catch (IOException e) {
LOG.error("Fatal transport error: " + e.getMessage());
LOG.error(method.getQueryString());
throw new AnnotationException("Transport error executing HTTP request.",e);
} finally {
// Release the connection.
method.releaseConnection();
}
return response;
}
protected static String readFileAsString(String filePath) throws java.io.IOException{
return readFileAsString(new File(filePath));
}
protected static String readFileAsString(File file) throws IOException {
byte[] buffer = new byte[(int) file.length()];
@SuppressWarnings("resource")
BufferedInputStream f = new BufferedInputStream(new FileInputStream(file));
f.read(buffer);
return new String(buffer);
}
static abstract class LineParser {
public abstract String parse(String s) throws ParseException;
static class ManualDatasetLineParser extends LineParser {
public String parse(String s) throws ParseException {
return s.trim();
}
}
static class OccTSVLineParser extends LineParser {
public String parse(String s) throws ParseException {
String result = s;
try {
result = s.trim().split("\t")[3];
} catch (ArrayIndexOutOfBoundsException e) {
throw new ParseException(e.getMessage(), 3);
}
return result;
}
}
}
public void saveExtractedEntitiesSet(String Question, LineParser parser, int restartFrom) throws Exception {
String text = Question;
int i=0;
//int correct =0 ; int error = 0;int sum = 0;
for (String snippet: text.split("\n")) {
String s = parser.parse(snippet);
if (s!= null && !s.equals("")) {
i++;
if (i<restartFrom) continue;
List<DBpediaResource> entities = new ArrayList<DBpediaResource>();
try {
entities = extract(new Text(snippet.replaceAll("\\s+"," ")));
System.out.println(entities.get(0).getFullUri());
} catch (AnnotationException e) {
// error++;
LOG.error(e);
e.printStackTrace();
}
for (DBpediaResource e: entities) {
RES.add(e.uri());
}
}
}
}
public abstract List<DBpediaResource> extract(Text text) throws AnnotationException;
public void evaluate(String Question) throws Exception {
evaluateManual(Question,0);
}
public void evaluateManual(String Question, int restartFrom) throws Exception {
saveExtractedEntitiesSet(Question,new LineParser.ManualDatasetLineParser(), restartFrom);
}
}
chính()
public static void main(String[] args) throws Exception {
String Question ="Is the Amazon river longer than the Nile River?";
db c = new db();
c.configiration(0.0, 0, "non", "CoOccurrenceBasedSelector", "Default", "yes");
System.out.println("resource : "+c.getResu());
}
Tôi chỉ cần thêm một chút sửa chữa cho câu trả lời của bạn. Mã của bạn đang chạy, nếu bạn thêm các cuộc gọi evaluate
phương pháp:
public static void main(String[] args) throws Exception {
String question = "Is the Amazon river longer than the Nile River?";
db c = new db();
c.configiration(0.0, 0, "non", "CoOccurrenceBasedSelector", "Default", "yes");
c.evaluate(question);
System.out.println("resource : "+c.getResu());
}
Lamine
Trong phương pháp request
của lớp thứ hai (AnnotationClient
) trong Adel's answer, tác giả Pablo Mendes đã không hoàn thành
TODO Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
mà là một cảnh báo gây phiền nhiễu mà cần phải được loại bỏ bằng cách thay thế
byte[] responseBody = method.getResponseBody(); //TODO Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
response = new String(responseBody);
với
Reader in = new InputStreamReader(method.getResponseBodyAsStream(), "UTF-8");
StringWriter writer = new StringWriter();
org.apache.commons.io.IOUtils.copy(in, writer);
response = writer.toString();
- 1. Sử dụng mát mẻ thuộc tính hoặc chú thích (CLR hoặc Java)?
- 2. Danh sách chú thích Scala?
- 3. Chèn chú thích tùy chỉnh trong 'trường' java sử dụng plugin chú thích + JAXB (khi xsd -> java)
- 4. Java chú thích
- 5. Java - Sử dụng chú thích và phương pháp đánh chặn?
- 6. Bạn có sử dụng chú thích Java không?
- 7. @XmlElementRefs & @XmlElementRef chú thích trong Java
- 8. Java - JPA - Chú thích @Version
- 9. Thực hành tốt nhất để sử dụng hằng số trong chú thích scala
- 10. @ModelAttribute chú thích, khi sử dụng nó?
- 11. Chú thích giống Java trong C++
- 12. Khi nào tôi nên (và tôi không nên) sử dụng chú thích @inline của Scala?
- 13. JPA: cách sử dụng chú thích @ElementCollection?
- 14. Danh sách chú thích lồng nhau trong Scala
- 15. @xmlSchema chú thích sử dụng với jaxb
- 16. Sử dụng hằng số Scala trong Java
- 17. C# - Sử dụng chú thích tùy chỉnh?
- 18. hibernate bằng cách sử dụng chú thích hoặc sử dụng các tệp cấu hình ngủ đông
- 19. Scala - Java =? (Hoặc Clojure - Java =?)
- 20. Chú thích Bộ điều hợp Java
- 21. Const tính chính xác trong Java bằng cách sử dụng chú thích?
- 22. Chú thích Hibernate hoặc cấu hình XML
- 23. Java Generics và chú thích: Type-Safe
- 24. Tại sao mọi người không thích chú thích?
- 25. eclipse java chú thích xử lý
- 26. Không thể đặt thành viên chú thích java được gọi là nhập bằng scala?
- 27. chú thích java: thư viện ghi đè chú thích bằng các tệp xml
- 28. Cách tìm chú thích trong tìm kiếm java nhật thực
- 29. Các quy ước chú thích Java
- 30. Sử dụng chú thích với lớp moderncv trong LaTeX