标签: tokenize

将字符串修剪为长度忽略HTML

这个问题很具挑战性.我们的应用程序允许用户在主页上发布新闻.该新闻是通过允许HTML的富文本编辑器输入的.在主页上,我们只想显示新闻项的截断摘要.

例如,这是我们正在显示的全文,包括HTML


为了在办公室,厨房里腾出更多的空间,我把所有随机的杯子拿出来放在午餐室的桌子上.除非你对1992年的Cheyenne Courier杯子或者1997年的BC Tel Advanced Communications杯子的所有权感到强烈,否则它们将放在一个盒子里并捐赠给比我们更需要杯子的办公室.

我们希望将新闻项目修剪为250个字符,但不包括HTML.

我们用于修剪的方法目前包括HTML,这导致一些HTML重大的新闻帖子被大大截断.

例如,如果上面的例子包含大量的HTML,它可能看起来像这样:

为了在办公室,厨房里腾出更多的空间,我已经拉了......

这不是我们想要的.

有没有人有一种标记HTML标签的方法,以保持字符串中的位置,对字符串执行长度检查和/或修剪,并恢复字符串中旧的位置的HTML?

html string truncate tokenize

9
推荐指数
1
解决办法
7006
查看次数

类似Google的搜索查询标记化和字符串拆分

我希望将搜索查询标记为类似于Google的操作方式.例如,如果我有以下搜索查询:

the quick "brown fox" jumps over the "lazy dog"
Run Code Online (Sandbox Code Playgroud)

我想要一个包含以下标记的字符串数组:

the
quick
brown fox
jumps
over
the
lazy dog
Run Code Online (Sandbox Code Playgroud)

如您所见,标记用双引号保留空格.

我正在寻找一些如何在C#中执行此操作的示例,最好不使用正则表达式,但是如果这样做最有意义并且性能最高,那就这样吧.

此外,我想知道如何扩展它来处理其他特殊字符,例如,在一个术语的前面放置一个强制从搜索查询中排除等等.

c# search tokenize

9
推荐指数
1
解决办法
3424
查看次数

在Javascript中使用空格拆分字符串?

我需要一个tokenizer,它给出一个字符串,其中包含单词之间的任意空格,将创建一个没有空子字符串的单词数组.

例如,给定一个字符串:

" I dont know what you mean by glory Alice said."
Run Code Online (Sandbox Code Playgroud)

我用:

str2.split(" ")
Run Code Online (Sandbox Code Playgroud)

这也返回空子字符串:

["", "I", "dont", "know", "what", "you", "mean", "by", "glory", "", "Alice", "said."]
Run Code Online (Sandbox Code Playgroud)

如何从数组中过滤掉空字符串?

javascript tokenize

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

在c#中使用Regex在字符串上拆分标记

我有一些"标记化"模板,例如(我称之为双括号之间的标记):

var template1 = "{{TOKEN1}} is a {{TOKEN2}} and it has some {{TOKEN3}}";
Run Code Online (Sandbox Code Playgroud)

我想从这句话中提取一个数组,以便有类似的东西:

Array("{{TOKEN1}}",
      " is a ",
      "{{TOKEN2}}", 
      " and it has some ", 
      "{{TOKEN3}}");
Run Code Online (Sandbox Code Playgroud)

我已尝试使用以下Regex代码实现此目的:

Regex r = new Regex(@"({{[^\}]*}})");
var n = r.Split(template1);
Run Code Online (Sandbox Code Playgroud)

结果是:

Array("",
      "{{TOKEN1}}",
      " is a ",
      "{{TOKEN2}}", 
      " and it has some ", 
      "{{TOKEN3}}",
      "");
Run Code Online (Sandbox Code Playgroud)

第一个问题是我无法从句子中恢复令牌.我只是通过在Regex表达式上添加括号来解决这个问题,即使我不确定为什么它会解决这个问题.

我目前面临的问题是当模板上的第一个和/或最后一个术语是"标记"时,数组开头和/或结尾的额外空术语.为什么会这样?我做错了什么,或者我应该经常检查这两个位置是否空虚?

在我的代码中,我需要知道哪个术语来自一个令牌,哪个是模板上的固定位置.在这个解决方案中,我将检查每个数组的位置,以"{{"和"}}"开头的字符串,我不认为这是最好的可能性.所以,如果有人想出一个更好的解决方案来打破这些事情,我会很高兴知道!

谢谢!

编辑:根据要求,我将发布一个简单的例子,为什么我需要对令牌和文本进行区分.

public abstract class TextParts { }
public class TextToken : TextParts { }
public class TextConstant : …
Run Code Online (Sandbox Code Playgroud)

c# regex split tokenize

9
推荐指数
1
解决办法
2143
查看次数

保护我的API仅适用于我的前端

我正在建立一个节点/快速后端.我想创建一个只能与我的reactjs前端(私有API)一起使用的API.

想象一下,如果这是一个电子商务网站,我的用户将浏览产品,然后选择购买什么,并在订购时可能会或可能不会登录.

确保我的API仅适用于reactjs前端的最佳做法是什么?

当用户决定登录或者他们仍然是客人时会发生什么?

authentication api tokenize node.js reactjs

9
推荐指数
2
解决办法
2449
查看次数

C++中的字符串标记生成器,允许多个分隔符

有没有办法在C++中用多个分隔符标记字符串?在C#中,我会做到:

string[] tokens = "adsl, dkks; dk".Split(new [] { ",", " ", ";" }, StringSplitOptions.RemoveEmpty);
Run Code Online (Sandbox Code Playgroud)

c# c++ string tokenize

8
推荐指数
1
解决办法
1915
查看次数

使用strtok()在c中将字符串标记两次

strtok()在c中使用来解析csv字符串.首先我将它标记为只是找出有多少令牌,这样我就可以分配一个正确大小的字符串.然后我使用上次用于标记化的相同变量.每次我第二次这样做虽然它strtok(NULL, ",")返回,NULL即使还有更多的令牌需要解析.谁能告诉我我做错了什么?

char* tok;
int count = 0;
tok = strtok(buffer, ",");
while(tok != NULL) {
    count++;
    tok = strtok(NULL, ",");
}

//allocate array

tok = strtok(buffer, ",");
while(tok != NULL) {
    //do other stuff
    tok = strtok(NULL, ",");
}
Run Code Online (Sandbox Code Playgroud)

所以在第二个while循环中它总是在找到第一个标记后结束,即使有更多的标记.有人知道我做错了什么吗?

c csv tokenize strtok

8
推荐指数
1
解决办法
9999
查看次数

PHP:将一串交替的字符组拆分成一个数组

我有一个字符串,正确的语法是正则表达式^([0-9]+[abc])+$.所以有效字符串的例子是:'1a2b'或'00333b1119a555a0c'

为清楚起见,字符串是(值,字母)对的列表,并且顺序很重要.我坚持使用输入字符串,所以我不能改变它.虽然使用上面的正则表达式来测试正确的语法似乎很容易,但我正在尝试考虑PHP中最有效的方法将兼容字符串转换为可用的数组,如下所示:

输入:

'00333b1119a555a0c'
Run Code Online (Sandbox Code Playgroud)

输出:

array (
  0 =>  array('num' => '00333', 'let' => 'b'),
  1 =>  array('num' => '1119', 'let' => 'a'),
  2 =>  array('num' => '555', 'let' => 'a'),
  3 =>  array('num' => '0', 'let' => 'c')
)
Run Code Online (Sandbox Code Playgroud)

我在使用preg_match方面遇到了困难.例如,这没有给出预期的结果,意图是在EITHER\d +上贪婪匹配(并保存)OR [abc](并保存),重复直到到达字符串结尾.

$text = '00b000b0b';
$out = array();
$x = preg_match("/^(?:(\d+|[abc]))+$/", $text, $out);
Run Code Online (Sandbox Code Playgroud)

这也不起作用,这里的意图是在\ d + [abc]上贪婪匹配(并保存这些),重复直到字符串到达​​结束,然后将它们分成数字和字母.

$text = '00b000b0b';
$out = array();
$x = preg_match("/^(?:\d+[abc])+$/", $text, $out);
Run Code Online (Sandbox Code Playgroud)

如果使用需要遍历结果2项在时间我计划检查语法作为的preg_match的一部分,然后使用的preg_match输出到贪婪-匹配"块"(或使用使preg_split保持分隔符如果),然后for (...; i+=2)到在他们的对中提取值字母.

但我似乎无法让基本的preg_split()或preg_match()方法顺利运行,更不用说探索是否有"整洁"或更有效的方法.

php regex tokenize regex-greedy

8
推荐指数
1
解决办法
838
查看次数

是否可以更改 Spacy 分词器的分词规则?

默认情况下,(德语)spacy 分词器不会按斜线、下划线或星号分割,这正是我所需要的(因此“der/die”会生成单个标记)。

然而,它确实在括号上拆分,因此“dies(und)das”被拆分为 5 个标记。是否有一种(简单)方法告诉默认标记器也不在括号上拆分,括号两边都由字母括起来,没有空格?

为分词器定义的括号上的分割到底是如何定义的?

python regex token tokenize spacy

8
推荐指数
1
解决办法
2695
查看次数

将 Hugging Face Transformer 文本嵌入转换回文本

有没有一种方法可以将 Hugging Face Transformer 嵌入转换回文本?

假设我使用 Hugging Face 的ClipTextModel使用以下方法创建了文本嵌入:

import torch
from transformers import CLIPTokenizer, CLIPTextModel

class_list = [
    "i love going home and playing with my wife and kids",
    "i love going home",
    "playing with my wife and kids", 
    "family",
    "war",
    "writing",
]
    
model = CLIPTextModel.from_pretrained("openai/clip-vit-large-patch14")
tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-large-patch14")
    
inputs = tokenizer(class_list, padding=True, return_tensors="pt")
outputs = model(**inputs)
hidden_state = outputs.last_hidden_state
embeddings = outputs.pooler_output
Run Code Online (Sandbox Code Playgroud)

我的嵌入位于变量“embeddings”中。问题:

  1. 我是否可以将嵌入转换回“class_list”中的输入字符串?准确地说:如果我将嵌入发送给一个不预先知道原始字符串列表的人;他们需要采取哪些步骤来提取原始字符串列表?
  2. 如果是这样,我该怎么做?

python pipeline tokenize huggingface-transformers

8
推荐指数
1
解决办法
2058
查看次数