是否有任何C#算法可以從文本中提取個人和地名?如何使用C#從文本中提取個人和地名?
例如,給出下面的文字:
St. Mark died at Alexandria, in Egypt. He was martyred, I think.
However, that has nothing to do with my legend. About the founding of
the city of Venice--
(馬克·吐溫的 「清白的人去」 取)
...有沒有什麼辦法來提取:
St. Mark
Alexandria (or better yet, "Alexandria, Egypt")
Venice
?
我認識到,有沒有辦法讓100%的準確度(其中所有的地名和人名被捕獲,並沒有「假陽性」被添加),但80%的準確率可能是非常有價值的。
我明白每個單詞可以與百科全書或一些這樣的比較,但必須有一個更好的辦法。另外,算法怎麼知道結合「聖」和「馬克」,並將「埃及亞歷山大」視爲「埃及亞歷山大」?
*「但必須有更好的辦法」* - 你爲什麼對此有信心?你如何識別你的頭腦中的名字?因爲你*知道*這些單詞對應的名稱,甚至地點。你把這些詞與一個人或一個地點聯繫起來;這正是計算機程序也需要做的。只有通過告訴它們關於它們的方式才能使這些關聯成爲可能,例如,使用名稱或位置的索引。 *「算法怎麼知道結合'聖'和'馬克'」 - 是的,它怎麼知道?你必須告訴它這樣做。 – poke
首先,這不是一個「C#」特定問題。其次,通過在google中輸入「從文本算法中提取個人和地名」一詞,您可以找到許多關於您想要做什麼的研究論文。 你可以做的最好的事情是,不用全部加入NLP就是過濾出明顯不匹配的單詞,並嘗試用其他類似的方法對它們進行分類:http://nlp.stanford.edu/software/CRF -NER.shtml –
我們開始編碼,這可能會有所幫助... 249個國家/地區的97.114個位置:http://www.unece.org/cefact/codesfortrade/codes_index.html – stefankmitph