所以我最近提出了一些新的可能项目,这些项目必须处理从用户提交和生成的文本中获得"含义".
自然语言处理是处理这些问题的领域,经过一些初步研究,我发现OpenNLP Hub和大学合作就像尝试项目一样.而stackoverflow就是这样.
如果有人能把我与一些好的资源联系起来,从研究论文和介绍性文本到apis,我会比一个6岁的小孩打开他的圣诞礼物更开心!
通过您的一条建议,我发现了opencyc("世界上最大,最完整的常识知识库和常识推理引擎").更令人惊奇的是,有一个项目是opencyc的蒸馏版本,名为UMBEL.它具有rdf/owl/skos n3语法中的语义数据.
我也偶然发现ANTLR,为解析器生成"构建识别,翻译,编译器和翻译从语法的说明".
我在这里有一个问题,列出了大量的免费和开放数据.
感谢stackoverflow社区!
假设您认识一名想要学习机器学习和自然语言处理的学生.
他们应该关注哪些具体的计算机科学科目以及专门设计哪些编程语言来解决这些类型的问题?
我不是在寻找你最喜欢的科目和工具,而是寻找行业标准.
示例:我猜测知道Prolog和Matlab可能对他们有所帮助.他们也可能想要研究离散结构*,微积分和统计.
*图形和树木.函数:属性,递归定义,解决重现.关系:属性,等价,偏序.证明技术,归纳证明.计数技术和离散概率.逻辑:命题演算,一阶谓词演算.正式推理:自然演绎,分辨率.用于编程正确性和自动推理的应用程序.计算中代数结构的介绍.
我目前正在寻找用适当的序数表示(第1,第2,第3)替换第一,第二,第三等字的方法.我上周一直在谷歌搜索,我没有找到任何有用的标准工具或NLTK的任何功能.
那么有没有或者我应该手动编写一些正则表达式?
谢谢你的建议
我正在处理一个接受不同语言用户输入的应用程序(目前修复了3种语言).要求是用户可以输入文本,而不必费心通过UI中提供的复选框选择语言.
是否有现有的Java库来检测文本的语言?
我想要这样的东西:
text = "To be or not to be thats the question."
// returns ISO 639 Alpha-2 code
language = detect(text);
print(language);
Run Code Online (Sandbox Code Playgroud)
结果:
EN
Run Code Online (Sandbox Code Playgroud)
我不想知道如何自己创建一个语言检测器(我已经看到很多博客试图这样做).该库应提供简单的APi,并且完全脱机工作.开源或商业封闭并不重要.
我也在SO上发现了这个问题(还有一些):
这可能有点早,但我正在运行Windows 10 Technical Preview Build 10122.我想设置Cortana以获得自定义命令.以下是她的工作方式:
Hey Cortana, <she'll listen and process this command>
Run Code Online (Sandbox Code Playgroud)
Microsoft将处理该命令,如果没有任何内容,她将只搜索bing上的输入.但是,我想能够说出类似的话,例如
Hey Cortana, I'm going to bed now
Run Code Online (Sandbox Code Playgroud)
并让输入I'm going to bed now触发器运行批处理脚本,VBScript,命令或任何某种自定义响应,基本上执行以下操作.
C:\> shutdown -s
Run Code Online (Sandbox Code Playgroud)
有没有办法为Cortana设置预定义的自定义命令?
更新:
我创建了这个基本的YouTube教程,这个更高级的教程与相应的GitHub回购基于talkitbr的优秀且非常有用的答案如下.
起初他的答案超出了我的理解,所以我决定将其细节分解为像我这样的未来用户.
使用Anaconda Python 2.7 Windows 10.
我正在使用Keras exmaple训练语言模型:
print('Build model...')
model = Sequential()
model.add(GRU(512, return_sequences=True, input_shape=(maxlen, len(chars))))
model.add(Dropout(0.2))
model.add(GRU(512, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(len(chars)))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
def sample(a, temperature=1.0):
    # helper function to sample an index from a probability array
    a = np.log(a) / temperature
    a = np.exp(a) / np.sum(np.exp(a))
    return np.argmax(np.random.multinomial(1, a, 1))
# train the model, output generated text after each iteration
for iteration in range(1, 3):
    print()
    print('-' * 50)
    print('Iteration', iteration)
    model.fit(X, y, batch_size=128, nb_epoch=1)
    start_index = random.randint(0, …Run Code Online (Sandbox Code Playgroud) 代码高尔夫系列似乎相当受欢迎.我遇到了一些将数字转换为单词表示的代码.一些例子是(编程乐趣的2的权力):
我的同事出现的算法差不多有两百行.似乎会有更简洁的方法来做到这一点.
现行指南:
我们知道BERT有tokens的最大长度限制=512,那么如果一篇文章的长度远远大于512,比如文本中有10000个tokens,BERT怎么用呢?
我试图从文本中提取人名.
有没有人有他们推荐的方法?
这就是我尝试的(代码如下):我nltk用来查找标记为人的所有内容,然后生成该人的所有NNP部分的列表.我正在跳过那些只有一个NNP的人,这可以避免抓住一个单独的姓氏.
我得到了不错的结果但是想知道是否有更好的方法来解决这个问题.
码:
import nltk
from nameparser.parser import HumanName
def get_human_names(text):
    tokens = nltk.tokenize.word_tokenize(text)
    pos = nltk.pos_tag(tokens)
    sentt = nltk.ne_chunk(pos, binary = False)
    person_list = []
    person = []
    name = ""
    for subtree in sentt.subtrees(filter=lambda t: t.node == 'PERSON'):
        for leaf in subtree.leaves():
            person.append(leaf[0])
        if len(person) > 1: #avoid grabbing lone surnames
            for part in person:
                name += part + ' '
            if name[:-1] not in person_list:
                person_list.append(name[:-1])
            name = ''
        person = []
    return …Run Code Online (Sandbox Code Playgroud) 我通过以下步骤(广泛地)使用Keras库训练了情绪分类器模型.
现在,使用此模型进行评分,我能够将模型保存到文件并从文件加载.但是我没有找到将Tokenizer对象保存到文件的方法.如果没有这个,我每次需要得到一个句子时都必须处理语料库.有没有解决的办法?