我使用R 从文本中提取包含特定人名的句子,这里是一个示例段落:
作为蒂宾根的改革者,他接受了由他的叔叔Johann Reuchlin推荐的Martin Luther对维滕贝格大学的电话.Melanchthon在21岁时成为维滕贝格的希腊语教授.他研究了圣经,特别是保罗和福音派教义.他作为旁观者出席了莱比锡(1519)的辩论,但参与了他的评论.约翰·埃克(Johann Eck)攻击了他的观点,梅兰克顿(Melanchthon)在他的Defensio对手Johannem Eckium的基础上回复了圣经的权威.
在这个短段中,有几个人的名字,如: Johann Reuchlin,Melanchthon,Johann Eck.在openNLP软件包的帮助下,可以正确地提取和识别Martin Luther,Paul和Melanchthon三个人的名字.然后我有两个问题:
我目前通过使用R中的SPARQL包查询DBPedia以获取人名列表.当我通过SPARQL检索名称列表时,出现了一些问题,即URI形式的某些名称包含标点符号(例如" ,"或"(")无法通过SPARQL查询识别,例如:
endpoint="http://de.dbpedia.org/sparql"
query= "SELECT COUNT (*){
dbpedia-de:Johannes_Aurifaber_(Vimariensis) ?p ?o
}"
qd=SPARQL(endpoint,query)
Run Code Online (Sandbox Code Playgroud)
事实证明这是一个错误:XML内容似乎不是XML:'Virtuoso 37000错误SP030:SPARQL编译器,第3行:'Vimariensis'之前的语法错误')'.但是,如果我将查询更改为:
endpoint="http://de.dbpedia.org/sparql"
query= "SELECT COUNT (*){
<http://de.dbpedia.org/resource/Johannes_Aurifaber_(Vimariensis)> ?p ?o
}"
qd=SPARQL(endpoint,query)
Run Code Online (Sandbox Code Playgroud)
一切都很顺利.但有没有办法修改第一个查询,因为查询人名列表更方便.
我现在试图在特定的 html 标签之间提取内容,例如:
<dl class="search-advanced-list">
<dt>
<h2><a id="/advanced-search?intercept=adv&as-advanced=+documenttype%3Asource title:%22ADB%22&as-type=advanced" name="ADB">ADB</a></h2>
</dt>
<dd>Allgemeine deutsche Biographie. Under the auspices of the Historical Commission of the Royal Academy of Sciences. 56 vols. Leipzig: Duncker & Humblot. 1875–1912.</dd>
<dt>
<h2><a id="/advanced-search?intercept=adv&as-advanced=+documenttype%3Asource title:%22AMS%22&as-type=advanced" name="AMS">AMS</a></h2>
</dt>
<dd>American men of science. J. McKeen Cattell, ed. Editions 1–4, New York: 1906–27.</dd>
<dt>
<h2><a id="/advanced-search?intercept=adv&as-advanced=+documenttype%3Asource title:%22Abbott%2C+C.+C.+1861%22&as-type=advanced" name="Abbott__C__C__1861">Abbott, C. C. 1861</a></h2>
</dt>
<dd>Abbott, Charles Compton. 1861. Notes on the birds of the Falkland Islands. Ibis 3: 149–67.</dd>
...
</dl>
Run Code Online (Sandbox Code Playgroud)