- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在为基线标注器编写代码。基于 Brown 语料库,它为单词分配了最常见的标签。因此,如果单词“works”被标记为动词 23 次,被标记为复数名词 30 次,那么根据用户输入的句子,它会被标记为复数名词。如果在语料库中找不到该词,则默认将其标记为名词。到目前为止,我的代码会返回单词的每个标签,而不仅仅是最常见的标签。如何实现只返回每个单词的频繁标记?
import nltk
from nltk.corpus import brown
def findtags(userinput, tagged_text):
uinput = userinput.split()
fdist = nltk.FreqDist(tagged_text)
result = []
for item in fdist.items():
for u in uinput:
if u==item[0][0]:
t = (u,item[0][1])
result.append(t)
continue
t = (u, "NN")
result.append(t)
return result
def main():
tags = findtags("the quick brown fox", brown.tagged_words())
print tags
if __name__ == '__main__':
main()
最佳答案
如果是英语,NLTK 中有一个默认的词性标注器,很多人一直在提示它,但这是一个很好的快速修复(更像是创可贴而不是扑热息痛),请参阅 POS tagging - NLTK thinks noun is adjective :
>>> from nltk.tag import pos_tag
>>> from nltk.tokenize import word_tokenize
>>> sent = "the quick brown fox"
>>> pos_tag(word_tokenize(sent))
[('the', 'DT'), ('quick', 'NN'), ('brown', 'NN'), ('fox', 'NN')]
如果您想从头开始训练基线标注器,我建议您按照这样的示例进行操作,但将语料库更改为英语:https://github.com/alvations/spaghetti-tagger
通过像 spaghetti-tagger
一样构建一个 UnigramTagger,您应该自动为每个单词实现最常见的标记。
但是,如果你想用非机器学习的方式来做,首先要计算 word:POS,你需要的是某种类型的标记比率。另见 Part-of-speech tag without context using nltk :
from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
from collections import Counter, defaultdict
from itertools import chain
def type_token_ratio(documentstream):
ttr = defaultdict(list)
for token, pos in list(chain(*documentstream)):
ttr[token].append(pos)
return ttr
def most_freq_tag(ttr, word):
return Counter(ttr[word]).most_common()[0][0]
sent1 = "the quick brown fox quick me with a quick ."
sent2 = "the brown quick fox fox me with a brown ."
documents = [sent1, sent2]
# Calculates the TTR.
documents_ttr = type_token_ratio([pos_tag(word_tokenize(i)) for i in documents])
# Best tag for the word.
print Counter(documents_ttr['quick']).most_common()[0]
# Best tags for a sentence
print [most_freq_tag(documents_ttr, i) for i in sent1.split()]
注意:文档流可以定义为句子列表,其中每个句子包含带有/不带标签的标记列表。
关于Python 和 NLTK : Baseline tagger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20993094/
当使用浏览器网络检查器时,我遇到了 CSS 属性 vertical-align 的两个不同的非标准属性。 -webkit-baseline-middle 仅在 Chrome 中可用,而 -moz-mi
我似乎在观察 flexbox 的一些令人困惑的行为,特别是在尝试使用 align-self: baseline 时。基本问题是它根本行不通;以下片段演示了该问题: .flex-form { dis
在 align-items: baseline 下,每行中基线最高的元素将“向下移动”以满足最低基线。 为什么当我只制作 item2 align-self: baseline; 时没有明显的变化?我可
零基础入门数据挖掘 - 二手车交易价格预测 赛题理解 比赛要求参赛选手根据给定的数据集,建立模型,二手汽车的交易价格. 赛题以预测二手车的交易价格为任务,数据集报名后可见并可下载,该数据
如何恢复到较早的基线?我们有一个 UCM 并行开发(多流)项目。每个开发人员都有一个关于 Project 集成流的快照 View 。 开发人员希望在他们的快照 View 中看到应用程序的早期版本,以便
我想创建一个如下所示的布局: (虚线是 TextView 的基线。) 所以主 anchor 是大的W,然后abc基线对齐到W,然后是def 高于 abc。 但是当我为 abc 设置基线对齐方式时,de
我只是从 HTML 和 CSS 开始 我想使用 Border-left 画一条线,但显示线比我画的 div 框短(如图所示)the line is not touch with baseline bo
如果有人对问题有更好的措辞,请编辑,我正在努力寻找答案时甚至搜索什么。 我有多行,每行三列。每列都有一个标题和描述。长度是动态的,我想将它们全部对齐到中间。但是,我希望所有内容均匀对齐 - 因此标题排
我遇到了一个问题,其中“align-item: baseline;”在 Safari 中不起作用。它适用于 Chrome 和 Firefox。这是错误还是我遗漏了什么? 代码笔:https://cod
我正在为基线标注器编写代码。基于 Brown 语料库,它为单词分配了最常见的标签。因此,如果单词“works”被标记为动词 23 次,被标记为复数名词 30 次,那么根据用户输入的句子,它会被标记为复
有些定义让我感到困惑...我发现文本的 anchors.baseline 与矩形的不同.. 为什么?基线的定义是什么?谢谢... Item { width: 400; height: 200
我无法理解以下来自 10 Visual formatting model details– W3C 的摘录. 节选: baseline: Align the baseline of the box w
Flutter-ffmpeg无法设置配置文件参数。 (我需要使用配置文件,以便可以在 WhatsApp 上播放渲染的视频)。 我正在将.bmp 图像转换为 mp4 视频。其他我已经测试了其他参数并且工
我想要一个短语,它有不同的字体大小,所有字体大小都在底部对齐,所以我做了以下事情: const styles = StyleSheet.create({ head
我在 Google Colab 中运行了以下代码: from baselines.common.atari_wrappers import make_atari, wrap_deepmind
我正在使用ggplot,如下所述 Smoothed density estimates 并在R控制台中输入 m <- ggplot(movies, aes(x = rating)) m + geom_
我们使用 Azure 托管许多(100 多个)具有相同设置的 SQL Azure 数据库。 Azure 安全中心每周执行一次漏洞扫描。目前,我们需要为每个单独的数据库设置基线。例如,每次添加一个新数据
我尝试将复选框与 EditText 右侧对齐。问题是,如果我按照自己的方式这样做,就会产生循环依赖。 我想在 EditTexts 的基线处对齐 Powerbox 和 Landline 复选框。 目前我
在使用 flex align-* 属性时,flex-start 和 baseline 有什么区别? 下面的代码片段为 align-self: flex-start 和 align-self: base
我正在使用这个模板:http://fluidbaselinegrid.com/创建流体网格来布局我的个人网站。并非我所有的网格都是高度,有时我会得到错误的位置。 [1]. 技能部分应位于博客文章 5
我是一名优秀的程序员,十分优秀!