小编caw*_*caw的帖子

命名实体识别的算法

我想使用命名实体识别(NER)来为数据库中的文本找到足够的标签.

我知道维基百科有关于此的文章以及许多描述NER的其他页面,我最好从您那里听到有关此主题的内容:

  • 您使用各种算法有什么经验?
  • 你会推荐哪种算法?
  • 哪种算法最容易实现(PHP/Python)?
  • 如何算法工作?是否需要手动培训?

例:

"去年,我在伦敦看到巴拉克奥巴马." =>标签:伦敦,巴拉克奥巴马

我希望你能帮助我.非常感谢你提前!

php python analysis extract named-entity-recognition

22
推荐指数
1
解决办法
8819
查看次数

如何编码人工神经网络(Tic-tac-toe)?

我想用人工神经网络玩Tic-tac-toe.我对网络的配置如下:对于9个字段中的每个字段,我使用2个输入神经元.当然,我有18个输入神经元.对于每个场,我有1个输入神经元用于一个玩家1和1个神经元用于一个玩家2.除此之外,我有1个输出神经元,它给出了当前电路板位置的评估.输出值越高,玩家1的位置越好.玩家2的位置越低,玩家2的位置越好.

但我的问题是:我怎么能编码神经网络?我的想法是使用Array [1-18]作为输入神经元.此数组的值是输入权重.我将使用循环遍历数组.每当有神经元被激活时,我都会将权重加到输出值上.所以输出值是激活的输入神经元的权重之和:

Output = SUM(ActivatedInputNeurons)
Run Code Online (Sandbox Code Playgroud)

你认为这是一种编程网络的好方法吗?你有更好的想法吗?

我希望你能帮助我.提前致谢!

artificial-intelligence game-ai neural-network

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

JTable:检测单元格数据的变化

在Netbeans中,我使用GUI Builder将JTable插入到我的应用程序中.

到目前为止,我只有一个类(CustomerDB):

package CustomerDB;

import [...];

public class CustomerDB extends javax.swing.JFrame {

    CellEditorListener ChangeNotification = new CellEditorListener() {
        public void editingCanceled(ChangeEvent e) {
            System.out.println("The user canceled editing.");
        }

        public void editingStopped(ChangeEvent e) {
            System.out.println("The user stopped editing successfully.");
        }
    };

    public CustomerDB() {
        customerTable = new javax.swing.JTable();
        customerTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, …
Run Code Online (Sandbox Code Playgroud)

java events swing jtable event-handling

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

Android:"类加载器可能会因托管多个应用程序的进程而失败"

Eclipse的logcat for Android中的这条消息是什么意思?

W/ActivityThread: ClassLoader.getResources: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有关于此警告的上下文,所以我不知道是什么导致了这个问题以及我如何解决它.

multithreading android classloader

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

屏幕打开时,Wi-Fi或CPU是否可以进入睡眠状态?

Android上有WakeLocks和WifiLocks - 如果我的屏幕永远不会关闭,我是否需要这些?

我使用持久连接(例如WebSockets)几十分钟甚至几小时.我的屏幕是否总是足以防止设备丢失这些连接(如果我们假设连接仍然可用且服务器正常)?

为了保持屏幕,我使用标准方式:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

文档说的是什么:

为了避免耗尽电池,一个闲置的Android设备很快就会睡着了.

(https://developer.android.com/training/scheduling/wakelock.html)

通常,当用户暂时不使用设备时,Wi-Fi无线电可能会关闭.

(http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html)

这是否意味着......

当用户长时间不与设备交互时(即使屏幕仍然打开),Wi-Fi无线电或CPU可能会进入睡眠模式或关闭?

而且,更具体地说,IntentService当仍有Activity屏幕保持开启时,后台任务(例如)Wi-Fi或移动数据连接是否会进入休眠状态?

android android-networking android-lifecycle

21
推荐指数
1
解决办法
1000
查看次数

在Android上使用外部支付处理器进行SaaS而非Google Play应用内结算

我已经建立了一个带有订阅的SaaS网站,由外部支付处理器(可能是Stripe,Braintree,Paddle等)启用.

现在,我的SaaS网站已经打包成一个小WebView包装器,即将作为Android应用程序发布.但是在Stripe网站上,我发现了这个:

Google的开发者条款要求与应用相关的购买(例如高级功能或赠送金额)是通过其原生的应用内结算API进行的.

- https://stripe.com/docs/mobile/android

深入了解Google Play的条款,你可以找到这个(强调我的):

  • 在Google Play上下载的游戏中提供产品或提供游戏内容访问权限的开发者必须使用Google Play应用内结算作为付款方式.
  • 在Google Play上下载的另一类应用中提供产品的开发者必须使用Google Play应用内结算作为付款方式,但以下情况除外:
    • 付款仅适用于实体产品
    • 付款是针对可能在应用程序本身之外消费的数字内容(例如可以在其他音乐播放器上播放的歌曲)

- https://play.google.com/intl/zh-CN/about/monetization-ads/

所以这似乎比Stripe的解释更宽松,而且由于我的SaaS不是游戏,也可以通过通用网络浏览器使用,我的理解是使用外部支付处理器代替Google Play的计费是好的.

一方面,这意味着大多数数字服务都可以避免谷歌播放的计费并使用其他东西,这对谷歌来说似乎太公平了.另一方面,这不包括游戏,谷歌可以从中产生大量收入,因此它可能再次合理.

这不是一个法律问题,无论如何,答案都不能在法律文献中找到,也不能通过询问律师.相反,根据对上述条款的解释,是否允许使用外部支付处理器完全由谷歌自行决定.

因此,我正在寻找实际指南和实际使用示例,而不是法律建议,以支持对上述术语的任何解释.

我发现的一个例子是Dropbox:在Android上下载了他们的应用程序后,Dropbox允许我在两种付款方式之间进行选择:Google Play或Dropbox自己网站上的借记卡.这似乎支持对Google Play条款的更宽松的解释.

另一个例子是Spotify,它打开一个WebView,您可以从多个付款选项中进行选择,其中没有一个是Google Play.该应用程序仍然拥有Android的应用内购买权限,这也在Play商店中公开,因此他们可能只在特定国家/地区使用Google的应用内结算.

还有其他现实世界的例子吗?

android billing in-app-billing google-play stripe-payments

21
推荐指数
1
解决办法
3056
查看次数

最好的聚类算法?(简单解释)

想象一下以下问题:

  • 你有一个数据库,在一个名为"文章"的表中包含大约20,000个文本
  • 您希望使用聚类算法连接相关的文件,以便一起显示相关文章
  • 算法应该做平面聚类(不是分层)
  • 相关文章应插入表"相关"
  • 聚类算法应根据文本决定两篇或多篇文章是否相关
  • 我想用PHP编写代码,但伪代码或其他编程语言的例子也可以

我用函数检查()编写了第一个草稿,如果两个输入文章是相关的则给出"true",否则给出"false".其余的代码(从数据库中选择文章,选择要比较的文章,插入相关的文章)也是完整的.也许你也可以改善休息.但对我来说重要的要点是函数check().因此,如果您可以发布一些改进或完全不同的方法,那将是很棒的.

方法1

<?php
$zeit = time();
function check($str1, $str2){
    $minprozent = 60;
    similar_text($str1, $str2, $prozent);
    $prozent = sprintf("%01.2f", $prozent);
    if ($prozent > $minprozent) {
        return TRUE;
    }
    else {
        return FALSE;
    }
}
$sql1 = "SELECT id, text FROM articles ORDER BY RAND() LIMIT 0, 20";
$sql2 = mysql_query($sql1);
while ($sql3 = mysql_fetch_assoc($sql2)) {
    $rel1 = "SELECT id, text, MATCH (text) AGAINST ('".$sql3['text']."') AS score FROM articles WHERE MATCH (text) AGAINST ('".$sql3['text']."') AND …
Run Code Online (Sandbox Code Playgroud)

algorithm text cluster-analysis data-mining text-mining

19
推荐指数
2
解决办法
9942
查看次数

使用window.crypto.getRandomValues在JavaScript中随机播放扑克牌组

扑克牌有52张牌,因此52!或大致2^226可能的排列.

现在我想要完美地洗牌这样一副牌,真正随机的结果和均匀的分布,这样你就可以达到每一个可能的排列,每个都可能出现.

为什么这实际上是必要的?

或许,对于游戏来说,你并不需要完美的随机性,除非有钱可以获胜.除此之外,人类可能甚至不会察觉到随机性的"差异".

但是如果我没有弄错的话,如果你使用通常内置于流行编程语言中的混洗函数和RNG组件,你通常会获得不超过32位的熵和2^32状态.因此,52!当你洗牌时,你永远无法达到牌组的所有可能的排列,但只有......

0.000000000000000000000000000000000000000000000000000000005324900157%

...可能的排列.这意味着一大堆的所有可能的游戏可以在理论上可以播放或模拟永远不会真正在实践中可以看出.

顺便说一句,你可以进一步提高的结果,如果你不每次都重新设置为默认顺序洗牌前,而是与订单开始从上一次洗牌或保持"烂摊子"游戏已经被播放后,并从那里洗牌.

要求:

因此,为了完成上述操作,我需要了解以下三个组件:据我所知:

  1. 一种良好的混洗算法,可确保均匀分布.
  2. 具有至少226位内部状态的适当RNG.由于我们在确定性机器上,PRNG将是我们所能得到的,也许这应该是CSPRNG.
  3. 具有至少226位熵的随机种子.

解决方案:

现在这可以实现吗?我们有什么?

  1. 就我所见,Fisher-Yates shuffle会很好.
  2. xorshift7 RNG具有比内部状态的所需要的226位的更多和应该足够了.
  3. 使用window.crypto.getRandomValues我们可以生成所需的226位熵作为我们的种子.如果仍然不够,我们可以从其他来源添加更多的熵.

题:

上述解决方案(以及要求)是否正确?那么如何在实践中使用JavaScript中的这些解决方案实现改组呢?如何将这三个组件组合成一个可行的解决方案?

我想我必须Math.random通过调用xorshift7 替换Fisher-Yates shuffle示例中的用法.但是RNG在[0, 1)浮点范围内输出一个值,而我需要[1, n]整数范围.缩放该范围时,我不想失去均匀分布.而且,我想要大约226位的随机性.如果我的RNG仅输出一个Number,那么随机性是否有效地降低到2 ^ 53(或2 ^ 64)位,因为输出没有更多的可能性?

为了生成RNG的种子,我想做这样的事情:

var randomBytes = generateRandomBytes(226);

function generateRandomBytes(n) {
    var data = new Uint8Array(
        Math.ceil(n / 8)
    );
    window.crypto.getRandomValues(data);

    return data;
}
Run Code Online (Sandbox Code Playgroud)

它是否正确?我不知道如何randomBytes以任何方式将RNG作为种子传递给我,我不知道如何修改它以接受它.

javascript random shuffle entropy

19
推荐指数
1
解决办法
772
查看次数

N-gram:解释+ 2个申请

我想用n-gram(最好用PHP)实现一些应用程序.


哪种类型的n-gram更适合大多数用途?单词级别或字符级别n-gram?你怎么能在PHP中实现一个n-gram-tokenizer?


首先,我想知道N-gram到底是什么.它是否正确?这就是我理解n-gram的方式:

句子:"我住在纽约."

单词级别的双字母(n为2):"#I","我活着","住在纽约","NY#"

字符级别双字母(n为2):"#I","I#","#l","li","iv","ve","e#","#i","in"," n#","#N","NY","Y#"

如果你有这个n-gram-parts数组,你可以删除重复的数组并为每个给出频率的部分添加一个计数器:

单词级别双字母:[1,1,1,1,1]

字符级别的双字母:[2,1,1,...]

它是否正确?


此外,我想了解更多关于你可以用n-gram做什么:

  • 如何使用n-gram识别文本的语言?
  • 即使您没有双语语料库,是否可以使用n-gram进行机器翻译?
  • 如何构建垃圾邮件过滤器(垃圾邮件,火腿)?将n-gram与贝叶斯滤波器相结合?
  • 如何进行主题定位?例如:关于篮球还是狗的文字?我的方法(用维基百科文章"狗"和"篮球"做下面的内容):为两个文档构建n-gram向量,对它们进行标准化,计算曼哈顿/欧几里德距离,结果越接近1,越高的是相似

您如何看待我的应用方法,特别是最后一个?


我希望你能帮助我.提前致谢!

php nlp analysis n-gram

18
推荐指数
1
解决办法
9132
查看次数

仅在特定设备上的SurfaceView中的ANR - 唯一的解决方案是短暂的睡眠时间

在我的Android应用程序中,我用a SurfaceView来绘制东西.它在数千台设备上运行良好 - 除了现在用户开始在以下设备上报告ANR:

  • LG G4
    • Android 5.1
    • 3 GB RAM
    • 5.5"显示
    • 2560 x 1440 px分辨率
  • 索尼Xperia Z4
    • Android 5.0
    • 3 GB RAM
    • 5,2"显示
    • 1920 x 1080 px分辨率
  • 华为Ascend Mate 7
    • Android 5.1
    • 3 GB RAM
    • 6.0"显示
    • 1920 x 1080 px分辨率
  • HTC M9
    • Android 5.1
    • 3 GB RAM
    • 5.0"显示
    • 1920 x 1080 px分辨率

所以我得到了LG G4,确实能够验证问题.它与...直接相关SurfaceView.

现在猜猜经过几个小时的调试后修复了什么问题?它正在取代......

mSurfaceHolder.unlockCanvasAndPost(c);
Run Code Online (Sandbox Code Playgroud)

...... ......

mSurfaceHolder.unlockCanvasAndPost(c);
System.out.println("123"); // THIS IS THE FIX
Run Code Online (Sandbox Code Playgroud)

怎么会这样?

以下代码是我的渲染线程,除了提到的设备之外一直工作正常:

import android.graphics.Canvas;
import android.view.SurfaceHolder;

public class MyThread extends Thread …
Run Code Online (Sandbox Code Playgroud)

java android surfaceview android-anr-dialog

18
推荐指数
1
解决办法
796
查看次数