标签: linguistics

如何正确地用"a"和"an"为单词添加前缀?

我有一个.NET应用程序,给定一个名词,我希望它正确地用"a"或"an"作为该单词的前缀.我该怎么办?

在您认为答案是简单地检查第一个字母是否是元音之前,请考虑以下短语:

  • 一个诚实的错误
  • 二手车

c# nlp linguistics

91
推荐指数
7
解决办法
1万
查看次数

编程中'let'变量的语言意义

所以,我是一个javascript程序员,新版本的JavaScript(ES6)有一个新的关键字来声明变量:let旁边是旧的var.

我知道这两者之间的区别,但我问自己:什么let代表什么?var显然是" var iable"的缩写,但是let?它也是缩写吗?它从何而来?

我用Google搜索了一下,令我惊讶的是,我找不到答案.我已经知道Swift也有一个let关键字(它们用于常量),但显然其他一些编程语言也使用它.

javascript linguistics ecmascript-6 swift

46
推荐指数
1
解决办法
8910
查看次数

通过语法检查从一组可能性中选择最流畅的文本(Python)

一些背景

我是佛罗里达新学院的文学专业学生,目前正致力于一个过于雄心勃勃的创意项目.该项目旨在实现诗歌的算法生成.它是用Python编写的.我的Python知识和自然语言处理知识只来自于通过互联网自学.我已经使用这些东西大约一年了,所以我并非无助,但在不同的方面,我在这个项目中遇到了麻烦.目前,我正在进入最后的发展阶段,并且遇到了一些障碍.

我需要实现某种形式的语法规范化,这样输出就不会像未绑定/变形的穴居人那样出现.大约一个月前SO上的一些友好人员给了我一些关于如何通过使用ngram语言建模器解决这个问题建议,基本上 - 但我正在寻找其他解决方案,因为看起来NLTK的NgramModeler不适合我的需要.(也提到了POS标签的可能性,但是我的文字可能太过零碎而且很奇怪,因为我的业余爱好者可以很容易地实现这一点.)

也许我需要像AtD这样的东西,但希望不那么复杂

我认为需要一些像截止日期Queequeg之类的东西,但这些都不是完全正确的.Queequeg可能不太合适 - 它是2003年为Unix编写的,我无法让它在Windows上工作(我已经尝试了一切).但我喜欢它所检查的是正确的动词共轭和数字协议.

另一方面,AtD更严格,提供的功能超出了我的需求.但我似乎无法得到它的python绑定工作.(我从AtD服务器得到502错误,我肯定很容易修复,但我的应用程序将在线,我宁愿避免依赖另一台服务器.我负担不起运行AtD服务器我自己,因为我的应用程序需要我的网站主机的"服务"数量已经威胁到导致这个应用程序廉价托管的问题.)

我想避免的事情

自己构建Ngram语言模型似乎不适合这项任务.我的应用程序抛出了许多未知的词汇,扭曲了所有的结果.(除非我使用的语料库太大而且对我的应用程序运行速度太慢 - 应用程序需要非常活泼.)

严格检查语法既不适合完成任务.语法不需要是完美的,并且句子不必比使用ngrams生成的类似英语的乱码更合理.即使它是乱七八糟的,我只需要强制动词共轭,数字协议,并做一些事情,如删除额外的文章.

事实上,我甚至不需要任何修正建议.我认为我需要的只是为了计算一组可能句子中每个句子中出现的错误数量,所以我可以按照他们的分数进行排序并选择语法问题最少的句子.

简单的解决方案?通过检测明显的错误来评分流畅度

如果存在一个处理所有这些的脚本,我会高兴极了(我还没有找到).当然,我可以为我找不到的代码编写代码; 我正在寻找有关如何优化我的方法的建议.

假设我们已经列出了一些文字:

existing_text = "The old river"

现在让我们说我的剧本需要弄清楚接下来可能会出现哪些动词"承受".我对这个例程的建议持开放态度.但我主要通过步骤#2获得帮助,通过计算语法错误来评定流畅度:

  1. 使用NodeBox语言学中的动词共轭方法来提出这个动词的所有结合; ['bear', 'bears', 'bearing', 'bore', 'borne'].
  2. 迭代可能性,(浅)检查由existing_text + " " + possibility("老河熊","老河熊"等)产生的字符串的语法.计算每个构造的错误计数.在这种情况下,似乎唯一提出错误的建筑是"老河熊".
  3. 包装应该很容易......在错误计数最低的可能性中,随机选择.

python grammar nlp linguistics nltk

30
推荐指数
2
解决办法
2838
查看次数

如何以编程方式生成类似Heroku的子域名?

我们已经看到了当您使用简单的"heroku create"将应用程序部署到Heroku时自动分配的有趣子域.

一些例子:炽热薄雾4652,电动夜-4641,晨霜-5543,辐射河-7322,等等.

它们似乎都遵循形容词 - 名词 - 4数字模式(大多数情况下).他们只是输入了一些形容词和名词的字典,然后在推送应用程序时随机选择它们的组合吗?是否有一个Ruby gem可以实现这一点,也许提供了一个可以通过词性搜索的字典,或者这是手动完成的事情?

ruby subdomain linguistics heroku

29
推荐指数
3
解决办法
6106
查看次数

如何确定随机字符串是否听起来像英语?

我有一个基于输入单词列表生成字符串的算法.如何仅将听起来像英语单词的字符串分开?即.在保留LORD的同时丢弃RDLO.

编辑:澄清一下,他们不需要是字典中的实际单词.他们只需要听起来像英语.例如,KEAL将被接受.

string nlp linguistics

22
推荐指数
2
解决办法
4381
查看次数

如何识别NSString中单词的词性?

我正在处理的应用程序要求我确定一个单词的词性NSString.

所以基本上你可以在Objective C中访问一个库/数据库/类,它可以检查单个单词(以a的形式NSString)是名词,形容词,副词还是动词?

有点像:

NSString *foo="cat";

if ([foo wordIsNoun]) {
    //do something
};
Run Code Online (Sandbox Code Playgroud)

在类似但稍微不相关的注释中,是否有可能检查两个NSString包含相同词干但不同时态(问,询问,询问等)的动词是否具有相同的词干?它也非常有用.

iphone linguistics objective-c ios

20
推荐指数
1
解决办法
3180
查看次数

否定句子的算法

我想知道是否有人熟悉算法句子否定的任何尝试.

例如,给出一个像"这本书好"的句子,提供任意数量的替代句子,意思相反,如"这本书不好",甚至"这本书不好".

显然,以高精度完成这一点可能超出了当前NLP的范围,但我确信已经有一些关于这个问题的工作.如果有人知道任何工作,请指点我一些文件?

text-processing nlp linguistics negation

18
推荐指数
2
解决办法
4761
查看次数

找到一组的"最佳"组合

我有一个集合,sentences其中包含字符串形式的英语句子.我想创建的一个子集sentences,sentences2,其中包含只含有20个独特的单词的句子.当然,有很多很多这样的子集,但我正在寻找"最好"的子集,而"最好的"我指的是所有单词中具有最高可能表示的子集sentences2.

以下示例将进一步阐明"最佳"的含义:

如果我要过滤sentences这组词:

(i,you,do,think,yes,dont,can,it,good,cant,but,am,why,where,now,no,know,here,feel,are)
Run Code Online (Sandbox Code Playgroud)

我会得到以下内容:

sentences2 = set(("where are you now", "here i am", "can you do it", "yes i can", "but can i do it", "no you cant", "do you feel good", "yes i do", "why are you here", "i dont know", "i think i know why", "you dont think", "yes i do", "no you dont", "i dont think you think", "i feel good", "but i am good", "i …
Run Code Online (Sandbox Code Playgroud)

python algorithm statistics combinations linguistics

18
推荐指数
3
解决办法
2157
查看次数

为单词搜索游戏选择随机字母的算法,允许拼写多个单词

我正在做一个类似boggle的文字游戏.给用户一个这样的字母网格:

O V Z W X
S T A C K
Y R F L Q
Run Code Online (Sandbox Code Playgroud)

用户使用任何相邻的字母链来挑选一个单词,例如跨越中间线的单词"STACK".然后用机器替换所用的字母,例如(小写的新字母):

O V Z W X
z e x o p
Y R F L Q
Run Code Online (Sandbox Code Playgroud)

请注意,您现在可以使用新字母拼写"OVeRFLoW".我的问题是:我可以使用什么算法来选择最大化用户可以拼写的长词数量的新字母?我希望游戏很有趣并且有时会拼写6个字母的单词,但是,如果你选择了不好的字母,游戏会让用户只拼写3个字母单词并且没有机会找到更大的单词.

例如:

  • 您可以随机选择字母表中的新字母.这不行.

  • 同样,我发现随机挑选,但使用Scrabble的字母频率效果不佳.这在Scrabble中效果更好我认为你对使用字母的顺序的约束较少.

  • 我尝试了一组列表,每个列表代表一个来自Boggle游戏的模具,每个字母都是从随机模具中挑选出来的(我也想知道我是否可以合法地在产品中使用这些数据).我没注意到这个工作得很好.我认为Boggle骰子的侧面是以一种合理的方式选择的,但我无法找到这是怎么做的.

我考虑过的一些想法:

  • 列出字母对中字母对的出现频率.为了论证,可以说E在30%的时间旁边被看到.当我选择一个新的字母时,我会根据这个字母的频率随机选择一个字母,该字母出现在网格上随机选择的相邻字母旁边.例如,如果相邻的字母是E,则新字母在30%的时间内将是"A".应该意味着在地图上分散使用很多不错的对.我可以通过在两个其他字母之间出现一个字母的概率表来改善这一点.

  • 以某种方式搜索当前网格上拼写的单词,将新单词作为通配符.然后我会用允许拼写最大单词的字母替换通配符.但是我不确定你会如何有效地做到这一点.

任何其他想法表示赞赏.我想知道是否有一种解决这个问题的常用方法以及其他文字游戏使用的方法.

编辑:感谢您迄今为止的精彩答案!我忘了提一下,如果可能的话,我的目标是低内存/ cpu要求,我可能会使用SOWPODS字典(约250,000),我的网格将能够6 x 6.

java algorithm computer-science linguistics

14
推荐指数
2
解决办法
4262
查看次数

英语词典api

是否有公共API可以让我查找单词的定义?我一直在寻找这个,但它与字典数据结构混在一起.我正计划在ac#app中使用它.

谢谢

.net c# api dictionary linguistics

14
推荐指数
1
解决办法
1万
查看次数