首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GoLang PoS标记脚本花费的时间比它在终端中没有输出的时间要长

GoLang PoS标记脚本花费的时间比它在终端中没有输出的时间要长
EN

Stack Overflow用户
提问于 2014-04-26 20:13:58
回答 2查看 702关注 0票数 0

此脚本在play.golang.org:1f中没有出现错误。

但是当我在我的机器上运行时,发生的时间比我预期的要长得多,终端机上什么也没有发生。

我想要构建的是一个PartOfSpeech标签。

我认为最长的部分是将lexicon.txt加载到地图中,然后将每个单词与那里的每个单词进行比较,看看它是否已经在词典中被标记了。词典只包含动词。但不是每个单词都需要检查,看看它是否是一个动词。

更大的问题是,我不知道如何确定一个词是否是一个动词,有一个容易启发的词,如副词、形容词等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-26 23:24:48

在这个函数中有一个大型数组参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func stringInArray(a string, list [214]string) bool{
    for _, b := range list{
        if b == a{
            return true;
        }
    }
    return false
}

每次调用此函数时,都会复制秒字数组。

大多数情况下,您应该使用片而不是数组。将此定义更改为list []string,并将stopWords定义为切片而不是数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
stopWords := []string{
    "and", "or", ...
}

更好的方法可能是构建stopWords的地图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
isStopWord := map[string]bool{}
for _, sw := range stopWords {
    isStopWord[sw] = true
}

然后,您可以快速检查一个单词是否是一个停顿词:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if isStopWord[word] { ... }
票数 0
EN

Stack Overflow用户

发布于 2014-04-29 11:14:25

(引用):

我不知道如何判断一个词是否是一个动词,带有像副词、形容词等简单的启发式。

在Go实现中,我不能谈论任何问题,但我将讨论POS标签的更大问题。听起来你在尝试构建一个基于规则的unigram标签。就这些条款作一点阐述:

  • "unigram“是指你在分别考虑句子中的每个单词。请注意,一个单字标签本身是有限的,因为它不能消除可以使用多个POS标记的单词的歧义。例如,你应该把“鱼”标记为名词还是动词?“最后”是动词还是副词?
  • “基于规则”指的正是它听起来的样子:一组规则,用来确定每个单词的标记。基于规则的标记以一种不同的方式受到限制--需要大量的开发工作来组装规则集,以处理公共语言中歧义的合理部分。如果您使用的是一种我们没有很好的培训资源的语言,但是在大多数普通语言中,我们现在有足够的标记文本来训练高精度的标记模型,这种努力可能是合适的。

最先进的POS标签是97%以上的准确性,在格式良好的新闻专线文本(较不正式的类型的准确性自然较低)。基于规则的标记器可能执行得更糟糕(您必须确定满足您的需求所需的准确性级别)。如果您想继续遵循基于规则的路径,我建议您阅读this tutorial。代码基于Haskell,但它将帮助您学习基于规则的标记中的概念和问题。

尽管如此,我强烈建议您考虑其他标记方法。我提到了字母标注的弱点。相关的方法是“bigram”,意思是我们在标记单词n、trigram(通常是前两个单词,或前一个单词、当前单词和后面的单词)时考虑前面的单词;更普遍的说,“n-gram”是指考虑n个单词的序列(通常是在我们正在标记的单词周围滑动窗口)。这种语境可以帮助我们消除“鱼”、“最后”、“苍蝇”等的歧义。

例如,在

我们钓鱼

我们可能想把鱼标记为动词,而在

吃鱼

这肯定是个名词。

在这里,The NLTK tutorial可能是一个很好的参考。一个实心的n克标签应该能让你达到90%以上的准确率;很可能超过95% (同样出现在新闻专线上)。

更复杂的方法(称为“结构化推理”)将整个标记序列作为一个整体来考虑。也就是说,它们不是试图分别预测每个单词的最可能标记,而是试图预测整个输入序列的最可能的标记序列。当然,结构化推理更难实现和训练,但相对于n-gram方法,通常会提高精度。如果你想了解这方面的情况,我建议Sutton and McCallum's excellent introduction

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23319311

复制
相关文章
golang 时间戳获取、类型转换、时间比较
time.ParseDuration()函数参数的有效时间单位为“ns”、“us”(或“µs”)、“ms”、“s”、“m”、“h”。该函数返回一个 Duration 对象,配合time的Add()方法使用,可以获取相差指定区间的时间。这个函数假设没有润秒。后面需要验证下会不会有闰年这种考虑。
IT工作者
2022/07/08
2.5K0
Golang中的格式化时间输出 顶
通常我们在程序处理过程需要对时间进行一定格式化的输出,以便让用户或者其他程序能够更加友好的识别时间,本篇记录下在使用golang语言过程中如何格式化时间。 通常情况下我们可以使用linux shell很方便的格式化时间:
BGBiao
2019/09/16
1.9K0
视频中的TS时间比较长,影响客户使用
hls格式视频一般是由列表索引文件*.m3u8,实体碎片文件*.ts组成的,正常逻辑会通过索引文件获取到真实的ts进行访问
v_pwyuewu
2020/12/19
1.6K0
golang 中的时间处理
在 golang 中有一个很重要的 格式化时间的字符串 2006-01-02T15:04:05Z07:00 , 这个也是 golang 默认时间模版模版中的 time.RFC3339
老麦
2022/12/24
9070
golang 中的时间处理
java 获取当前系统时间 时间比较
import java.util.Date; import java.text.SimpleDateFormat;
全栈程序员站长
2022/11/02
2.7K0
瀚高数据库的时间比较
to_char (to_Date(b.create_time,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd') between to_char (to_Date(#{startTime},'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd')
用户9131103
2023/07/17
7500
以太坊中的 PoS
构成共识机制的基础,区块链使用这些机制实现分布式共识。验证者将 ETH 质押到智能合约中,如果失信或消极怠工,则罚没质押。验证者检查新区块是否有效,有时候自己也会创建新区块。
谛听
2023/03/19
1.5K0
将linux终端的输出信息保存到log中
之后你在终端输入的相关命令,及终端的所有输出信息都被保存到screen.log文件中,然后执行以下命令,停止保存:
心跳包
2020/08/31
5.2K0
Python你可能会用到的时间比较
    场景:数据库保存的是datetime.datetime.now()的str类型的数据,需要把数据库保存的时间跟现在的时间进行比较。
py3study
2020/01/08
2K0
Flink框架中的时间语义和Watermark(数据标记)
“时间”在我们日常的开发学习过程中是特别常见的一个名词,例如:Java中的日期处理类、获取系统的当前时间、毫秒级的时间戳等等。接下来让我们来看看在Flink框架中,对时间不同的概念。Flink框架中有三个时间的语义:事件时间(Event Time )、摄入时间(Ingestion Time)、系统处理时间(Processing Time)。
百思不得小赵
2022/12/01
8100
Flink框架中的时间语义和Watermark(数据标记)
C++中如何获取终端输出的行数,C++清除终端输出特定的一行内容
单纯使用C++ 进行编程的时候,很多输出的调试信息都是直接在终端输出的,那么有的时候就会对终端输出的信息有一定的要求,那么如何进行定位终端输出的信息到底输出到了哪一行呢?如何清除特定的一行终端内容呢?
全栈程序员站长
2022/07/11
4K0
StreamingLLM输入、输出无限长的小记
本文中: 最多400万token上下文、推理提速22倍,StreamingLLM火了,已获GitHub 2.5K星 提到了StreamingLLM可以提供给模型无限输入、无限输出的能力,大概解读一下这个概念
悟乙己
2023/10/19
4550
StreamingLLM输入、输出无限长的小记
Golang 中的格式化输入输出
fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf。格式“占位符”衍生自 C,但比 C 更简单。
院长技术
2020/07/13
9880
GO的几个输出【GoLang】
2、fmt.Printf("%v %T",a,a) 输出 a 的值和类型 %d %s等等也是支持的,%v是通用的 3、支出复数输出(后面再学)
来杯Sherry
2023/05/25
2410
代理模式与它在源码中的运用
此时RealSubject作为代理对象的一个属性字段,在运行之前就会生成RealSubject的字节码文件,这种方式也称作静态代理
爬蜥
2019/07/09
3300
命令模式与它在源码中的运用
将每一个请求当做一个命令,存下具体的命令接收者,然后等待着命令被执行或者被取消,当命令被执行时,可以先记录先执行了那些命令,接着命令接收者开始执行自己的操作。
爬蜥
2019/07/01
3020
oracle sql 时间比较_oracle todate格式
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说oracle sql 时间比较_oracle todate格式,希望能够帮助大家进步!!!
Java架构师必看
2022/09/12
8450
HTML中的标记
文章目录 前言 块级元素 行内元素 行内块级元素 ---- 前言 HTML中的标记 块级元素 h1-h6>>1-6级标题 p>>段落 div>>定义文档中的节 ul>>定义无序列表 ol>>定义有序列表 li>>定义无序列表与有序列表中的项 hr>>水平线 address>>定义文档作者或拥有者的联系信息 blockquote>>定义长的引用 pre>>定义预格式文本 form>>定义表单 fieldset>>定义围绕表单中元素的边框 legend>>定义 fieldset 元素的
MIKE笔记
2023/03/23
5.6K0
mysql datetime、timestamp时间比较 性能提升
1.传统的方法 SELECT * FROM customer lastlogintime >= '2015-01-01 13:50:42' AND lastlogintime <= '2015-02-06 00:00:00' ORDER BY ID DESC 但是传统的方法效率很低。 2.采用UNIX_TIMESTAMP,能有效的提高效率。 SELECT * FROM customer WHERE UNIX_TIMESTAMP(lastlogintime) >= UNIX_TIME
gfu
2020/01/05
2.2K0
python 下字符串格式时间比较
python 下有多个有关时间的模块,分别是time、datetime、calendar,今天重点讨论下time写法。
黯然销魂掌
2018/09/27
9560

相似问题

代码花费的时间比预期的要长

10

OpenMP花费的时间比预期的要长

10

程序花费的时间比预期的错误要长。

20

Pthread程序花费的时间比预期的要长

10

Windows角色实例花费的时间比预期的要长。

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文