在iOS电子邮件客户端中,当电子邮件包含日期,时间或位置时,文本将成为超链接,只需点击链接即可创建约会或查看地图.它不仅适用于英语电子邮件,也适用于其他语言.我喜欢这个功能,想了解他们是如何做到的.
这样做的天真方法是拥有许多正则表达式并运行它们.但是我不能很好地扩展它并且只适用于特定的语言或日期格式等.我认为Apple必须使用一些机器学习的概念来提取实体(晚上8点,晚上8点,8点, 0800,20:00,20h,20h00,2000等).
知道Apple如何能够在其电子邮件客户端中如此快速地提取实体?您将应用什么机器学习算法来完成这样的任务?
nlp machine-learning named-entity-recognition information-extraction
我正在尝试使用NLTK从我的文本中提取命名实体.我发现NLTK NER对我的目的不是很准确,我想添加一些我自己的标签.我一直在努力寻找培养自己的NER的方法,但我似乎无法找到合适的资源.我有几个关于NLTK的问题 -
我真的很感谢这方面的帮助
标题几乎总结了这个问题.我注意到在一些论文中,人们提到了NER的BILOU编码方案,而不是典型的BIO标记方案(例如Ratinov和Roth在2009年的这篇论文http://cogcomp.cs.illinois.edu/page/publication_view/199)
从使用2003 CoNLL数据开始,我知道这一点
B stands for 'beginning' (signifies beginning of an NE)
I stands for 'inside' (signifies that the word is inside an NE)
O stands for 'outside' (signifies that the word is just a regular word outside of an NE)
Run Code Online (Sandbox Code Playgroud)
虽然我被告知BILOU中的单词代表
B - 'beginning'
I - 'inside'
L - 'last'
O - 'outside'
U - 'unit'
Run Code Online (Sandbox Code Playgroud)
我也看到人们引用另一个标签
E - 'end', use it concurrently with the 'last' tag
S - 'singleton', use it concurrently with the 'unit' tag …Run Code Online (Sandbox Code Playgroud) 我正在为java寻找一个简单但"足够好"的命名实体识别库(和字典),我希望处理电子邮件和文档并提取一些"基本信息",如:名称,地点,地址和日期
我一直在环顾四周,而且大多数人似乎都处于沉重的一面和完整的NLP项目中.
有什么建议?
我正在尝试使用NLTK工具包从文本消息中获取提取位置,日期和时间.我刚刚在我的机器上安装了工具包,我编写了这个快速片段来测试它:
sentence = "Let's meet tomorrow at 9 pm";
tokens = nltk.word_tokenize(sentence)
pos_tags = nltk.pos_tag(tokens)
print nltk.ne_chunk(pos_tags, binary=True)
Run Code Online (Sandbox Code Playgroud)
我假设它将确定日期(明天)和时间(晚上9点).但令人惊讶的是,它未能认识到这一点.运行上面的代码时,我得到以下结果:
(S (GPE Let/NNP) 's/POS meet/NN tomorrow/NN at/IN 9/CD pm/NN)
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解我是否遗漏了某些东西,或者NLTK还不够成熟,无法正确标记时间和日期.谢谢!
text-processing nlp machine-learning named-entity-recognition nltk
我现在正在使用一些NLP库,(stanford和nltk)斯坦福我看过演示部分,但只是想问一下是否有可能用它来识别更多的实体类型.
因此,目前斯坦福NER系统(如演示所示)可以将实体识别为人(姓名),组织或位置.但被认可的组织仅限于大学或一些大型组织.我想知道我是否可以使用它的API为更多实体类型编写程序,例如,如果我的输入是"Apple"或"Square",它可以将其识别为公司.
我是否必须制作自己的训练数据集?
此外,如果我想要提取实体及其彼此之间的关系,我觉得我应该使用stanford依赖解析器.我的意思是,首先提取命名实体和标记为"名词"的其他部分,并找出它们之间的关系.
我对么.
谢谢.
我正在尝试使用Python NLTK中的Stanford Named Entity Recognizer(NER)提取人员和组织的列表.当我跑:
from nltk.tag.stanford import NERTagger
st = NERTagger('/usr/share/stanford-ner/classifiers/all.3class.distsim.crf.ser.gz',
'/usr/share/stanford-ner/stanford-ner.jar')
r=st.tag('Rami Eid is studying at Stony Brook University in NY'.split())
print(r)
Run Code Online (Sandbox Code Playgroud)
输出是:
[('Rami', 'PERSON'), ('Eid', 'PERSON'), ('is', 'O'), ('studying', 'O'),
('at', 'O'), ('Stony', 'ORGANIZATION'), ('Brook', 'ORGANIZATION'),
('University', 'ORGANIZATION'), ('in', 'O'), ('NY', 'LOCATION')]
Run Code Online (Sandbox Code Playgroud)
我想要的是从这个列表中提取这种形式的所有人和组织:
Rami Eid
Sony Brook University
Run Code Online (Sandbox Code Playgroud)
我试图循环遍历元组列表:
for x,y in i:
if y == 'ORGANIZATION':
print(x)
Run Code Online (Sandbox Code Playgroud)
但是这段代码只打印每行一个实体:
Sony
Brook
University
Run Code Online (Sandbox Code Playgroud)
对于真实数据,可以有多个组织,一个句子中的人,我如何在不同实体之间设置限制?
我想使用命名实体识别(NER)来为数据库中的文本找到足够的标签.
我知道维基百科有关于此的文章以及许多描述NER的其他页面,我最好从您那里听到有关此主题的内容:
例:
"去年,我在伦敦看到巴拉克奥巴马." =>标签:伦敦,巴拉克奥巴马
我希望你能帮助我.非常感谢你提前!
最近,我一直在尝试使用Stanford Core NLP训练n-gram实体.我已经按照以下教程 - http://nlp.stanford.edu/software/crf-faq.shtml#b
有了这个,我只能指定unigram令牌及其所属的类.任何人都可以指导我,以便我可以将它扩展到n-gram.我试图从聊天数据集中提取电影名称等已知实体.
如果我错误地解释了斯坦福教程,请指导我,同样可以用于n-gram培训.
我坚持的是以下属性
#structure of your training file; this tells the classifier
#that the word is in column 0 and the correct answer is in
#column 1
map = word=0,answer=1
Run Code Online (Sandbox Code Playgroud)
例如,第一列是单词(unigram),第二列是实体
CHAPTER O
I O
Emma PERS
Woodhouse PERS
Run Code Online (Sandbox Code Playgroud)
现在我需要训练像Hulk,Titanic等已知实体(比如电影名称)作为电影,这种方法很容易.但是如果我需要训练我知道你去年夏天做了什么或者宝宝出去做了什么,最好的办法是什么?
nlp named-entity-recognition stanford-nlp named-entity-extraction opennlp
我需要将单词分类到他们的词性中.像动词,名词,副词等.我用过
nltk.word_tokenize() #to identify word in a sentence
nltk.pos_tag() #to identify the parts of speech
nltk.ne_chunk() #to identify Named entities.
Run Code Online (Sandbox Code Playgroud)
这是一棵树.例如
>>> sentence = "I am Jhon from America"
>>> sent1 = nltk.word_tokenize(sentence )
>>> sent2 = nltk.pos_tag(sent1)
>>> sent3 = nltk.ne_chunk(sent2, binary=True)
>>> sent3
Tree('S', [('I', 'PRP'), ('am', 'VBP'), Tree('NE', [('Jhon', 'NNP')]), ('from', 'IN'), Tree('NE', [('America', 'NNP')])])
Run Code Online (Sandbox Code Playgroud)
访问此树中的元素时,我按如下方式执行:
>>> sent3[0]
('I', 'PRP')
>>> sent3[0][0]
'I'
>>> sent3[0][1]
'PRP'
Run Code Online (Sandbox Code Playgroud)
但是在访问命名实体时:
>>> sent3[2]
Tree('NE', [('Jhon', 'NNP')])
>>> sent3[2][0]
('Jhon', 'NNP')
>>> …Run Code Online (Sandbox Code Playgroud)