【发布时间】:2014-06-12 21:54:05
【问题描述】:
有什么方法可以更高效地使用 Standford Tagger?
对 NLTK 包装器的每次调用都会为每个分析的字符串启动一个新的 java 实例,这非常慢,尤其是在使用较大的外语模型时...
http://www.nltk.org/api/nltk.tag.html#module-nltk.tag.stanford
【问题讨论】:
标签: python nltk stanford-nlp
有什么方法可以更高效地使用 Standford Tagger?
对 NLTK 包装器的每次调用都会为每个分析的字符串启动一个新的 java 实例,这非常慢,尤其是在使用较大的外语模型时...
http://www.nltk.org/api/nltk.tag.html#module-nltk.tag.stanford
【问题讨论】:
标签: python nltk stanford-nlp
找到了解决办法。可以在 servlet 模式下运行 POS Tagger,然后通过 HTTP 连接到它。完美。
http://nlp.stanford.edu/software/pos-tagger-faq.shtml#d
例子
在后台启动服务器
nohup java -mx1000m -cp /var/stanford-postagger-full-2014-01-04/stanford-postagger.jar edu.stanford.nlp.tagger.maxent.MaxentTaggerServer -model /var/stanford-postagger-full-2014-01-04/models/german-dewac.tagger -port 2020 >& /dev/null &
调整防火墙以限制仅从本地主机访问端口 2020
iptables -A INPUT -p tcp -s localhost --dport 2020 -j ACCEPT
iptables -A INPUT -p tcp --dport 2020 -j DROP
用 wget 测试它
wget http://localhost:2020/?die welt ist schön
关闭服务器
pkill -f stanford
恢复 iptable 设置
iptables -D INPUT -p tcp -s localhost --dport 2020 -j ACCEPT
iptables -D INPUT -p tcp --dport 2020 -j DROP
【讨论】:
--2020-11-24 17:28:00-- http://localhost:2020/?die Resolving localhost (localhost)... 127.0.0.1 Connecting to localhost (localhost)|127.0.0.1|:2020... connected. HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9 Length: unspecified Saving to: ‘index.html?die’ index.html?die [ <=>
‘index.html?die’ saved [47] http://welt/ Resolving welt (welt)... failed: Name or service not known. wget: unable to resolve host address ‘welt’ - http://ist/ Resolving ist (ist)... failed: No address associated with hostname. wget: unable to resolve host address ‘ist’ --2020-11-24 17:28:04-- http://xn--schn-7qa/ Resolving xn--schn-7qa (xn--schn-7qa)... failed: Name or service not known. wget: unable to resolve host address ‘xn--schn-7qa’ FINISHED --2020-11-24 17:28:06-- Total wall clock time: 5.6s Downloaded: 1 files, 47 in 0s (5.47 MB/s)
使用nltk.tag.stanford.POSTagger.tag_sents() 标记多个句子。
tag_sents 已替换旧的batch_tag 函数,请参阅https://github.com/nltk/nltk/blob/develop/nltk/tag/stanford.py#L61
已弃用:
使用batch_tag而不是tag标记句子,请参阅http://www.nltk.org/_modules/nltk/tag/stanford.html#StanfordTagger.batch_tag
【讨论】:
taggedlist = batch_tag[sent for sent in queue].
batch_tag 已重构为 tag_sents