小编Bak*_*riu的帖子

查找标记化句子的确切位置

我想提取文本的句子,但是我需要结果的确切位置。当前tokenize.sent_tokenize在NLTK中的实现不会返回提取句子的位置,因此我尝试了以下操作:

offset, length = 0, 0
for sentence in tokenize.sent_tokenize(text):
    length = len(sentence)
    yield sentence, offset, length
    offset += length
Run Code Online (Sandbox Code Playgroud)

但是它不会返回句子的确切位置,因为sent_tokenize会在结果句子边界之外删除一些书写字符(例如,换行符,多余的空格和...)。我不想使用简单的正则表达式模式来拆分句子,我知道在这种情况下,这个问题很小。

谢谢。

python tokenize nltk

4
推荐指数
1
解决办法
1966
查看次数

为什么在实际实现中必须再次键入每个方法时,Java中使用的接口?

为什么在实际实现中必须再次键入每个方法时,Java中使用的接口?什么是写出界面使事情变得容易的情况的例子?

java interface

4
推荐指数
1
解决办法
99
查看次数

实现"继承"(实现)通用接口的接口?

interface ITurtle
{        
    void Fight();
    void EatPizza();
}

interface ILeonardo : ITurtle
{
    void UseKatana();
}

interface IRaphael : ITurtle
{
    void UseSai();
}

interface IDonatello : ITurtle
{
    void UseBo();
}

interface IMichelangelo : ITurtle
{
    void UseNunchuku();
}
Run Code Online (Sandbox Code Playgroud)

如果我想创建一个可以完成所有4个的大乌龟怎么办?我想编码:

class GrandTurtle : IMichelangelo, IDonatello, IRaphael, ILeonardo
{
    // Implementation not shown for brevity.
}
Run Code Online (Sandbox Code Playgroud)

这是否可能,因为现在,似乎我必须实施Fight(),EatPizza()每次4次.但我认为这两个常用功能将解决,只需要实施一次,对吧?

我可以创建4个中间接口而不继承ITurtle,然后GrandTurtle实现ITurtle.这解决了接口继承问题,但现在它在语义上看起来是错误的,因为它ITurtle看起来像第5个兄弟,它不是.另外,我希望能够创建特定于龟的类,例如class BostonLeonardo : ILeonardo.

我从许多地方读过,似乎是一场无休止的争论 - 有人说"接口内的继承"很精细,那些说不是 - 我要么不理解他们的解释,要么他们只是说这是不好的做法而不解释为什么.

c# inheritance interface interface-implementation

4
推荐指数
1
解决办法
406
查看次数

haskell实施问题

Haskell是一门非常棒的语言.我喜欢它.但作为一名C++程序员并且具有一些关于计算机体系结构的基本知识,我真的想知道有关Haskell的实现细节.

我的意思是,例如,map功能.我知道语法,结果.但是,我想知道这个函数在RAM中是如何工作的.因为C族语言非常清楚语法和计算机行为之间的映射.

那么有没有人对功能程序语法背后的计算机行为有所了解?或者关于这个的任何书籍都像"在C++对象模型中"?

haskell behavior language-implementation

4
推荐指数
1
解决办法
212
查看次数

为什么不能(完全)使用其他类型的同义词来应用具有参数的类型同义词?

我们可以使用参数定义类型同义词,这与实际类型一起使用时效果很好:

type MyType t = t String String

data Test a b = Test a b

f :: MyType Test
f = undefined

main = undefined
Run Code Online (Sandbox Code Playgroud)

编译这会导致没有错误:

$ghc --make test.hs                                           
[1 of 1] Compiling Main             ( test.hs, test.o )                                          
Linking test ...   
Run Code Online (Sandbox Code Playgroud)

但是,当Test类型为同义词时,这不起作用:

type MyType t = t String String

data Test a b = Test a b

type Test' a b = Test a b

f :: MyType Test'
f = undefined

main = undefined
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误:

$ghc …
Run Code Online (Sandbox Code Playgroud)

haskell types

4
推荐指数
1
解决办法
235
查看次数

Haskell类型混淆

我开始学习Haskell,虽然它通常很棒,但类型类系统的一些特殊性在数字化项目中引起了很多挫折.举一个具体的例子,如果我打开ghci并检查添加类型,我会得到:

Prelude> :t (+)
(+) :: Num a => a -> a -> a
Run Code Online (Sandbox Code Playgroud)

添加是超级通用的,Num是最通用的类​​型等,所以一切都有意义.但是,如果我宣布了一些功能是除此之外,然后检查的类型功能,类型类被还原成Integer!

Prelude> let add = (+)
Prelude> :t add
add :: Integer -> Integer -> Integer
Run Code Online (Sandbox Code Playgroud)

发生什么了?

haskell type-conversion

4
推荐指数
1
解决办法
78
查看次数

"where"关键字是懒惰的吗?

假设我有类似的功能

foo = 8 + f1
  where f1 = 8 + 9
        f2 = 8 + 10
Run Code Online (Sandbox Code Playgroud)

f1显然必须进行评估,但f2不一定要评估.会不会呢?我可以看到评估每个where表达式是一个性能问题.

haskell lazy-evaluation

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

如何在不遍历多次的情况下跟踪字符串的多个属性?

我最近做了一个验证字符串的练习题.

使用该Maybe类型编写一个函数,该函数计算字符串中元音的数量和辅音的数量.如果元音的数量超过辅音的数量,则该函数返回Nothing.

我为每个计数元音和计数辅音结束了两个函数:

isVowel :: Char -> Bool
isVowel c = c `elem` "aeiou"

countVowels :: String -> Integer
countVowels []     = 0
countVowels (x:xs) =
  if isVowel x
  then countVowels xs + 1
  else countVowels xs

countConsonants :: String -> Integer
countConsonants []     = 0
countConsonants (x:xs) =
  if not $ isVowel x
  then countConsonants xs + 1
  else countConsonants xs
Run Code Online (Sandbox Code Playgroud)

然后只是比较两者的值来得到我的答案.

makeWord :: String -> Maybe String
makeWord [] = Nothing
makeWord s  =
  if countVowels …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming traversal list

4
推荐指数
2
解决办法
354
查看次数

haskell中的类型级多态性

我正在通过Richard Bird和Ross Paterson 的文章De Bruijn表示法作为嵌套数据类型.在一个点上,定义了一个术语的折叠操作:

infixl 9 :@

data Expr a =
      Var a
    | (Expr a) :@ (Expr a)
    | Lam (Expr (Maybe a)

foldT ::
    (forall a. a -> n a) ->
    (forall a. n a -> n a -> n a) ->
    (forall a. n (Maybe a) -> n a) ->
    Expr b -> n b
foldT v _ _ (Var x) = v x
foldT v a l (fun :@ arg) = a (foldT …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell types

4
推荐指数
1
解决办法
113
查看次数

了解Haskell中的键值构造函数

我试图了解类型同义词以及如何实际使用它们。

这是类型的同义词:

empty = const Nothing
type KVS a b = a -> Maybe b
Run Code Online (Sandbox Code Playgroud)

我想制作一个函数,KVS以使用以下代码插入一对:

insert k v kvs = \k' -> if k' == k then Just v else kvs k'
Run Code Online (Sandbox Code Playgroud)

我对这段代码的疑问是:

  1. 什么是k'在lambda?它代表什么?
  2. 它从哪里获得价值?
  3. 什么是状态if k' == k检查?

我不明白的概念JustMaybe,但代码这个特殊的一块是我无法绕到我的头。

关于函数式编程的解释会很好。

haskell functional-programming key-value

3
推荐指数
1
解决办法
98
查看次数