我在整个网络上看到了大量关于pythonNLTK如何简化单词二元语法计算的文档。字母呢?我想做的是插入字典,让它告诉我不同字母对的相对频率。最终我想做一些马尔可夫过程来生成看起来可能(但假的)的词。 最佳答案 这是一个使用collections中的计数器的示例(模数相对频率分布)模块:#!/usr/bin/envpythonimportsysfromcollectionsimportCounterfromitertoolsimportislicefrompprintimportpprintdefsplit_every(n,ite
我从scikit-learn开始,我正在尝试将一组文档转换为我可以应用聚类和分类的格式。我已经看到了有关矢量化方法的详细信息,以及用于加载文件和索引其词汇表的tfidf转换。但是,我有每个文档的额外元数据,例如作者、负责的部门、主题列表等。如何向向量化函数生成的每个文档向量添加特征? 最佳答案 您可以使用DictVectorizer获取额外的分类数据,然后使用scipy.sparse.hstack将它们结合起来。 关于python-scikit-learn,将特征添加到向量化的文档集,我
Scikit-learn具有相当用户友好的机器学习python模块。我正在尝试训练用于自然语言处理(NLP)的SVM标记器,其中我的标签和输入数据是单词和注释。例如。词性标记,而不是使用double/整数数据作为输入元组[[1,2],[2,0]],我的元组将如下所示[['word','NOUN'],['young','形容词']]任何人都可以举例说明如何将SVM与字符串元组一起使用吗?此处给出的教程/文档适用于整数/double输入。http://scikit-learn.org/stable/modules/svm.html 最佳答案
给定一个单词,它可能是也可能不是单数形式的名词,你将如何生成它的复数形式?基于此NLTKtutorial还有这个informallist关于复数规则,我写了这个简单的函数:defplural(word):"""Convertsawordtoitspluralform."""ifwordinc.PLURALE_TANTUMS:#defectivenouns,fish,deer,etcreturnwordelifwordinc.IRREGULAR_NOUNS:#foot->feet,person->people,etcreturnc.IRREGULAR_NOUNS[word]elifwor
我有很多字符串,如下所示,伊斯兰堡:首席大法官IftikharMuhammadChaudhry说国民账户卡拉奇,7月24日--警方声称已分别逮捕数名嫌疑人ALUMKULAM,斯里兰卡--随着灰腹云层开始遮盖焦黄我正在使用NLTK删除日期线部分并识别日期、位置和人名?使用pos标记我可以找到词性。但我需要确定位置、日期、人名。我该怎么做?更新:注意:我不想执行另一个http请求。我需要使用我自己的代码来解析它。如果有图书馆,可以使用它。更新:我使用ne_chunk。但运气不好。importnltkdefpchunk(t):w_tokens=nltk.word_tokenize(t)pt=
我正在使用NLTK对文档进行分类——每个文档有1个标签,有10种类型的文档。对于文本提取,我正在清理文本(去除标点符号、去除html标记、小写)、去除nltk.corpus.stopwords,以及我自己的停用词集合。对于我的文档功能,我正在查看所有50k个文档,并按频率(frequency_words)收集前2k个词,然后为每个文档识别文档中的哪些词也在全局frequency_words中。然后我将每个文档作为{word:boolean}的hashmap传递到nltk.NaiveBayesClassifier(...)我有一个20:80的测试训练比率关于总文件数量。我遇到的问题:NL
我想知道我是否可以将它们解压缩为正常形式?问题是我有数千个不同形式的单词,例如吃、吃、吃、吃等等,我需要计算每个词的出现频率。所有这些-吃、吃、吃、吃等都将计入吃,因此我使用了词干提取。但是问题的下一部分要求我在数据中找到相似的词,我正在使用nltk的同义词集来计算词之间的Wu-Palmer相似度。问题是nltk的同义词集不会对词干词起作用,或者至少在这段代码中它们不会。checkiftwowordsarerelatedtoeachother我应该怎么做?有没有办法取消词干? 最佳答案 我认为一个好的方法就像在https://sta
我即将参与一个NLP相关的项目,需要用到各种库。有些在java中,有些在C/C++中(用于需要更快速度的任务),最后一些在Python中。我正在考虑使用Python作为“胶水”,并为我想要执行的每项依赖于不同语言的任务创建包装类。为了做到这一点,包装类,例如,将执行java程序并使用管道与其通信。我的问题是:您认为这适用于对CPU要求高且重复性高的任务吗?或者管道通信增加的开销是否太大?您是否有任何其他(最好是简单的)架构建议? 最佳答案 我只是建议不要这样做。不要“为了速度”在C/C++中实现东西。性能优势不会可能像您预期的那样大
给定一个输入词,我想判断它是不是名词(如果有歧义,比如cook可以是名词也可以是动词,这个词必须被识别为a名词)。实际上我使用了StanfordParser的词性标注器(我给它一个词作为输入,我只从结果中提取词性标签)。结果非常好,但需要很长时间。有没有办法(在python中,请:)比我实际做的更快地执行此任务? 最佳答案 如果您只想检查单个词是否可以用作名词,最快的方法可能是构建一个包含所有名词的集合,然后只检查该词是否属于该集合。要获得所有名词的列表,您可以使用WordNet语料库(例如可以通过NLTK访问):>>>fromnl
在AttentionIsAllYouNeed,作者实现了位置嵌入(它添加了关于单词在序列中的位置的信息)。为此,他们使用正弦嵌入:PE(pos,2i)=sin(pos/10000**(2*i/hidden_units))PE(pos,2i+1)=cos(pos/10000**(2*i/hidden_units))其中pos是位置,i是维度。它必须产生形状为[max_length,embedding_size]的嵌入矩阵,即给定序列中的一个位置,它返回PE[position,:]的张量。我找到了Kyubyong's实现,但我不完全理解。我尝试通过以下方式在numpy中实现它:hidden