小编Dav*_*ave的帖子

用于生成真实单词的词干算法

我需要一段文字并从中提取一个"标签"列表.其中大部分都很直接.但是我现在需要一些帮助来阻止生成的单词列表以避免重复.示例:社区/社区

我已经使用了Porter Stemmer算法的实现(顺便说一下我在PHP中编写):

http://tartarus.org/~martin/PorterStemmer/php.txt

这可以达到一定程度,但不会返回"真实"的单词.上面的例子被称为"commun".

我尝试过"Snowball"(在另一个Stack Overflow线程中建议).

http://snowball.tartarus.org/demo.php

对于我的例子(社区/社区),Snowball源于"社交".

有没有其他干扰算法可以做到这一点?还有其他人解决了这个问题吗?

我目前的想法是,我可以使用词干算法来避免重复,然后选择我遇到的最短词是要显示的实际词.

php nlp stemming snowball porter-stemmer

36
推荐指数
3
解决办法
3万
查看次数

关注点分离; MVC; 为什么?

在我开始下一个重大项目之前,我正在阅读OO.为了给你一些快速的背景知识,我是一名PHP开发人员,致力于Web应用程序.

特别感兴趣的一个领域是用户界面; 具体如何构建它并将其连接到我的OO"模型".

我一直在读这个领域.我最喜欢的一个是: 为面向对象的系统构建用户界面

"所有对象都必须提供自己的UI"

考虑到我的问题,我可以看到这很好用.例如,我构建了我的"用户"对象来代表登录我网站的人.我的一种方法是"display_yourself"或类似方法.我可以在整个代码中使用它.也许从这开始就是他们的名字.之后,如果我需要调整以显示他们的名字+小头像,我可以更新这个方法,嘿-presto,我的应用程序更新.或者如果我需要将他们的名字作为他们个人资料的链接,嘿-presto我可以从一个地方轻松再次更新.

在OO系统方面; 我认为这种方法效果很好.看看其他StackOverflow线程,我在"Separation of Concerns"下找到了这个: Soc

"在计算机科学中,关注点分离(SoC)是将计算机程序分解为尽可能少地在功能上重叠的不同特征的过程.关注点是程序中的任何兴趣或焦点.通常,关注点是同义词在信息隐藏的帮助下,传统上通过模块化和封装来实现SoC的进步.

在我看来,我已经实现了这一点.我的用户对象隐藏了它的所有信息.在我显示它之前,我在代码中没有任何地方我说$ user-> get_user_name().

然而,这似乎违背了其他人似乎认为的"最佳实践".

引用同一问题中的"选定"(绿色)答案:

"关注点的分离是将每个问题的代码分开.改变接口不应该要求改变业务逻辑代码,反之亦然.模型 - 视图 - 控制器(MVC)设计模式是分离这些问题的一个很好的例子.为了更好的软件可维护性."

为什么这样可以提高软件的可维护性?当然,对于MVC,我的View必须对模型有很多了解吗?阅读JavaWorld文章,了解有关这一点的详细讨论: 为面向对象的系统构建用户界面

无论如何......最后到达实际点!

1.任何人都可以推荐任何详细讨论此内容的书籍吗?我不想要一本MVC书; 我不是在MVC上卖的.我想要一本讨论OO/UI,潜在问题,潜在解决方案等的书.(可能包括MVC)Arthur Riel的面向对象设计启发式

触及它(也是一本优秀的书!),但我想要更详细的东西.

2.任何人都可以提出一个与Allen Holub的JavaWorld文章一样充分解释的论点,该文章解释了为什么MVC是一个好主意?

非常感谢能够帮助我就此得出结论的任何人.

php oop model-view-controller user-interface

31
推荐指数
2
解决办法
7257
查看次数