如果我尝试这段代码:
import nltk
pattern = [(r'(March)$','MAR')]
tagger=nltk.RegexpTagger(pattern)
print tagger.tag('He was born in March 1991')
Run Code Online (Sandbox Code Playgroud)
我得到一个输出类似于:
[('H',无),('e',无),('',无),('w',无),('a',无),('s',无),(' ',无),>('b',无),('o',无),('r',无),('n',无),('',无),('我',无),('n',无),('',无),('M',无),('a',无),('r',无),('c',无), ('h',无),('',无),('1',无),('9',无),('9',无),('1',无)]
事实上,我希望这个标记器能够识别带有'MAR'标签的'March'字样.
我需要编写一个代码,该代码对产品的几行评论作为输入,并根据描述评论中产品的形容词对产品进行评级.我刚刚使用POS标签来标记每条评论的词性.现在,我必须挑选出描述名词的形容词,如果名词似乎与产品有关,我需要考虑相应的形容词.这是我用于POS标记的代码..它工作正常.
import java.io.*;
import edu.stanford.nlp.tagger.maxent.MaxentTagger;
public class Tagg {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
String tagged;
// Initialize the tagger
MaxentTagger tagger = new MaxentTagger("edu/stanford/nlp/models/pos-tagger/wsj- left3words/wsj-0-18-left3words-distsim.tagger");
FileInputStream fstream = new FileInputStream("src/input.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
FileWriter q = new FileWriter("src/output.txt",true);
BufferedWriter out =new BufferedWriter(q);
String sample;
//we will now pick up sentences line by line from the file input.txt and store it in the string sample
while((sample = br.readLine())!=null)
{
//tag the string
tagged …
Run Code Online (Sandbox Code Playgroud) 重新编写:
我有一份计算机科学相关文件.我想提取特定于域的关键字.例如JAVA,C#,HTML,OOP,UML,Unity等.我一直在寻找类似牛津计算机词典的来源,但是他们的API还没有启动和运行.我也尝试过Webopedia用于计算机科学术语,但是那个并不是包容性的和更新的(例如它不包括我的文档中的某些单词,如F#),或者在维基百科的情况下,所有术语都没有列在一起.是否有更具包容性的来源或适当的方法来提取这些关键字?我正在使用Python和NLTK.例如,tf-idf没有帮助,因为一些特定于域的单词几乎在所有文档中都很常见,因此这些单词不会得到很高的评价.我认为如果我可以使用POS标签会有所帮助,但我不确定哪种选择最适合我的应用程序.以下面的字符串为例:
"JavaScript,JSON和AJAX中的专家级功能,以及对JQuery等JavaScript框架的深入了解"在这里,我想提取这些词:['JavaScript','JSON','AJAX','Frameworks','JQuery ']但是当我使用NLTK的POS标记搜索名词时,我也得到'水平','能力','知识'...... 谢谢你的帮助.
这一定很简单,但我不知何故错过了它。我有代码:
import nltk
f=open('...\\t.txt','rU')
raw=f.read()
tokens = nltk.word_tokenize(raw)
print nltk.pos_tag(tokens)
Run Code Online (Sandbox Code Playgroud)
例如返回:
"[('进程', 'NNS'), ('a', 'DT'), ('序列', 'NN'), ('of', 'IN'), ('单词', 'NNS' )]
我想知道如何仅收集所有“NN”或所有“DT”和“IN”而不是字符串的每个成员。
提前致谢
我想运行一个需要stanford postagger.jar的代码.但我有这个错误:
File "/usr/lib/python2.7/site-packages/nltk/internals.py", line 562, in find_jar
(name, path_to_jar))
ValueError: Could not find stanford-postagger.jar jar file at resources/stanford-postagger.jar
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个错误?
编辑: 我使用hazm模块:
from hazm import POSTagger
tagger = POSTagger()
tagger.tag(word_tokenize('?? ????? ???? ?????????'))
Run Code Online (Sandbox Code Playgroud)
并且完整结果:
Traceback (most recent call last):
File "pyt.py", line 8, in <module>
tagger = POSTagger()
File "/home/vahid/dev/hazm/hazm/POSTagger.py", line 14, in __init__
super(stanford.POSTagger, self).__init__(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/nltk/tag/stanford.py", line 42, in __init__
verbose=verbose)
File "/usr/lib/python2.7/site-packages/nltk/internals.py", line 562, in find_jar
(name, path_to_jar))
ValueError: Could not find stanford-postagger.jar jar …
Run Code Online (Sandbox Code Playgroud) 我编写了一个Python代码,用于从NLTK库中训练Brill Tagger大约8000个英语句子并标记大约2000个句子.
Brill Tagger需要花费很多时间来训练,最后当它完成训练时,程序的最后一个语句有一些微小的语法错误,因此代码没有返回输出.
是否可以将标记器保持在训练状态,同时纠正错误并使程序运行而无需等待几个小时才能对标记器进行相同数据的培训?
我需要用Java构建一个POS标记器,并且需要知道如何开始.是否有代码示例或其他资源来帮助说明POS标记器的工作原理?
我正在寻找一种方法来检测人称代词是第一人(I),第二人(你)还是第三人(他们).代码正在寻找是否有人在谈论自己,但也有其他一些应用程序.
一个python库会很棒,但不是必需的.nltk.pos_tag会告诉我什么是人称代词,但我似乎无法得到更多的信息.
这样的事情存在吗?
我想使用文本文件作为输入来评估NLTK中的不同POS标签.
举个例子,我将采用Unigram标记器.我已经找到了如何使用棕色语料库评估Unigram标签.
from nltk.corpus import brown
import nltk
brown_tagged_sents = brown.tagged_sents(categories='news')
brown_sents = brown.sents(categories='news')
# We train a UnigramTagger by specifying tagged sentence data as a parameter
# when we initialize the tagger.
unigram_tagger = nltk.UnigramTagger(brown_tagged_sents)
print(unigram_tagger.tag(brown_sents[2007]))
print(unigram_tagger.evaluate(brown_tagged_sents))
Run Code Online (Sandbox Code Playgroud)
它产生如下输出.
[('Various', 'JJ'), ('of', 'IN'), ('the', 'AT'), ('apartments', 'NNS'), ('are', 'BER'), ('of', 'IN'), ('the', 'AT'), ('terrace', 'NN'), ('type', 'NN'), (',', ','), ('being', 'BEG'), ('on', 'IN'), ('the', 'AT'), ('ground', 'NN'), ('floor', 'NN'), ('so', 'QL'), ('that', 'CS'), ('entrance', 'NN'), ('is', 'BEZ'), ('direct', 'JJ'), ('.', …
Run Code Online (Sandbox Code Playgroud) 我有一个用例,我想使用 spacy 或 nltk 或任何 NLP 库提取句子的主要有意义的部分。
例句1: “我如何提高反对骚扰的声音” 意图是: “提高反对骚扰的声音”
例句2: “唐老鸭是由哪个漫画家/哪个男人/谁创作的?” 意图是: “唐老鸭是由”创造的
例句3: “如何使用spacy或nltk检索句子的主要意图”? 意图: “使用 spacy nltk 检索句子的主要意图”
我是依赖解析的新手,并不完全知道如何做到这一点。请帮我。
pos-tagger ×10
nltk ×7
nlp ×6
python ×5
java ×3
filter ×1
glossary ×1
linguistics ×1
nltk-trainer ×1
spacy ×1
stanford-nlp ×1