## wuliaoKeyword (关键词物料生成器)
[TOC]
生成关键词物料工具。
### 你需要准备的文件:
1. 关键词文件。`.txt` 类型文件。
2. 关键词物料生成规则文件。`.csv` 类型文件。
3. 备选项(如果你想精细控制的话):
* 关键词 【匹配模式】配置文件。`.json` 类型文件。详情 [匹配模式精细配置](#ppms-json)
* 关键词 【出价】配置文件。 `.json` 类似文件。详情 [出价精细配置说明](#chujia-json)
### 关键词物料生成规则文件内容要求:
其实,就是关键词物料的模板,只是要加上几列,并且要填上必要的内容。需要更改的地方如下:
#### 1.新增多出的列及列标题:
+ groupBy —— 分词核心词/字符/组合(组合用 "&" 连接),[详情](#for-groupby)
+ findBy —— 分词匹配规则(包含、相同,默认"包含"),[详情](#for-findby)
+ isGroupByLength —— 是否按词长再次分组,默认"否"。(如果填"是"则会更改【单元/推广组】名称:加上"-N"后缀,例如:`‘编程培训-前端-10’`。**`如果你不想增加推广单元,一定不要填"是")`** ,[详情](#for-isGroupByLength)
以下是关于新增列填写说明:
<h5 id="for-findby">1.1.1 groupBy</h5>
groupBy 列填写的是分词规则,即哪些词可以分到这一推广单元(推广组)。支持的写法:
* `%t`—— 包含 **非汉字符号** 的关键词。
* `核心字词`—— 包含 `核心字词` 的关键词。
* `核心字词&核心字词...`—— 包含多个不同 `核心字词` 组合的关键词。核心字词的个数不限制。是包含还是结构相同由 `findBy` 列的 `包含` 或者 `相同` 来控制。它们的对分词的效果如下:
* `包含`,默认值,留空的话将是 `包含`。它指`核心字词`组合中的每个 `核心字词` 都在当前的关键词中。
* `相同`, 它指不仅所有`核心字词`都有而且 `核心字词` 出现的先后顺序一致。
* 例子:
```
关键词: 上海JAVA培训大概多少钱
核心词组合:JAVA&上海
```
>* 在`包含` 模式下分到词。'JAVA' 和 '培训' 都包含在 "上海JAVA培训大概多少钱" 中。
>
>* 在`相同` 模式下分不到词。 'JAVA' 和 '培训' 虽都包含在 "上海JAVA培训大概多少钱" 中,但顺序不一致。
* `核心字词&%t`—— 包含`核心字词`并且包含 **非汉字符号** 的关键词。 *`findBy`* 的控制无效,默认使用`包含` 模式
* `核心字词&核心字词...&%t`—— 包含`核心字词`组合并且包含 **非汉字符号** 的关键词。 *`findBy`* 的控制无效,默认使用`包含` 模式。
>**注意**: 规则中使用 `&` 作为多条件连接符号,其他符号将被视为条件本身,因为处理过程中工具使用 `&` 作为分割符使用。不用其他符号也是为了与 Excel 及类似软件的运算符区分开来,方便编辑。
----
<h5 id="for-findby">1.1.2 findBy</h5>
findBy 列用指定对核心词的匹配方式。就两种:
* `包含`: 核心词均包含在关键词中。默认方式。
* `相同`: 能匹配跟多个核心词组成的组合结构(先后顺序)一致的关键词。
**注意:**
* 留空则 为 `包含`模式。
* 当 groupBy 列下的单元格有 `%t` 标记时,`相同` 不起作用,将用 `包含` 模式。
----
<h5 id="for-isGroupByLength">1.1.3 isGroupByLength</h5>
isGroupByLength 用来控制是否根据通过 groupBy、findBy 匹配到的关键词的字数(长度)进一步细分。如果填`“是”` 将会更改【推广组】(也叫【推广单元】)的名称。其结果是:
* 关键词按字数分组(同时符合分词规则),只是对符合 `核心词、核心词组合`的关键词再次按字数细分。
* 会增加推广单元(推广组)的个数。若再细分,在不增加推广计划的前提下,只能在【推广单元】下手了。每增加一个推广单元我们要做的事情也会增加,如果你的帐户没有这样的管理方式,又或者你不希望给自己带来更多麻烦,不要填"是"。 如果填"是",则结果类似下面的例子:
```
培训-好-10 --> 所有字数为 10 且有“培训”、“好” 的关键词均分在该组下。
培训-好-11 --> 所有字数为 11 且有“培训”、“好” 的关键词均分在该组下。
```
----
#### 2. 要更改的列标题:
因为各个渠道的物料有所差异,列标题的名称也有差异,因此有些地方要进行统一命名。
+ tgjh —— 推广计划名称,将【推广计划/名称】列名改为:`tgjh`;
+ group —— 单元(推广组)名,将物料模板上定义【推广单元】、【推广组】名称的列的列名改为:`group`;
+ ppms —— 匹配模式,将物料模板上定义关键词【匹配模式】的列名改为:`ppms`;
+ chujia —— 出价,将物料模板上定义关键词【出价】的列的列名改为:`chujia`;
+ keyword —— 关键词,将物料模板上定义【关键词】的列的列名改为:`keyword`;
+ pcURL —— 计算机访问URL,同样的更改定义【PC访问的推广页面地址】的列的列名改为:`pcURL`
+ ydURL —— 移动访问URL,同样的更改定义【移动访问的推广页面地址】的列的列名改为:`ydURL`
> 注意:
>
>1. 要新增的列以及要更改列名必须做了处理,否则无法处理。
>2. 处理过程中都是按 “关键词物料生成规则CSV文件” 一行一行地进行,CSV 的 **行** 有空白的地方并且不在精细处理的范围内,则输出的结果也是空的。
>3. 分词时,将根据 `groupBy` 列中规则最长的行开始,这样可以保证核心词较多的组能分到词,因此不必担心条件多的推广组分不到词。(当然这取决关键词自身,以及`分词模式选项`控制--`findBy`)
>4. 每个推广平台的物料会有所差异,为保证输出结符合物料的要求,最好不要改动列的位置;
> * **新增的前3列是不会输出的——`groupBy`,`findBy`,`isGroupByLength`**
> * **列标题被改的列依然会保持原有的位置。**
----
#### 3. 关于 URL
工具提供了是否添加关键词 ID 的选项,如果选址“是”,则给URL的末尾加上关键词 ID ,它的参数以及值:
* 使用的连接符: `&`
* **参数**:可自行设置,默认为 `'mykeyid'`, **ID值**: 由字母和数字组成的字符串,类似:`ckdeqybh702aqsottgbyg7atm`
* ID 唯一性:
1. 同一个关键词的 `pcURL` 和 `ydURL` 的 ID 值是一致的,且在本次执行本工具后输出的所有 ID 中都是唯一的。
2. 但对比多个账户就不一定了(未验证,如果大家发现不能多账户唯一,请反馈给我们。)
>我们觉得 ID 已经足够长了…… 当然,长并不代表唯一……
* 如果你还有其他的URL参数,请自行补充完整,关键词 ID 只会加到已有URL的末尾。结果类似:`http://www.example.com/a1.html?(你自己定义的部分)&mykeyid=ckdeqybh702aqsottgbyg7atm` ,工具只在最后加。如不需要请选 “否”,也可以后期处理掉。
----
#### 4. 关于精细配置文件的说明
为了能让生成关键词物料的过程能更加“智能”——让后期需要我们修正的地方更少!这也意味着我们要写更加详细的规则,工具对关键词的【匹配模式】和【出价】两项配置提供了进一步配置的方法。但编辑CSV文件是一件痛苦的事情——即便大家会在 Excel 这类软件中先编辑好后另存为CSV文件,在 Excel 中编辑较为复杂的内容会把人逼疯的,我们还是直接写程序可直接调用的文件吧——仅支持 `.json` 文件。然后把JSON文件的路径粘贴到需要精细配置的单元格即可。
> JSON 文件,后缀名:` .json`,不了解的朋友可直接参照示例进行更改即可。很多专业的文本编辑器都提供对JSON文件编辑的支持,错误的格式和内容会得到提示,以帮助大家编辑出格式准确的 JSON 文件。
>
> 推荐的编辑器: [Visual Studio Code](https://code.visualstudio.com/Download),其实也有网页类的编辑器,自行找找。
下面是相关的说明及示例:
<h5 id = "ppms-json">匹配模式精细配置</h5>
关键词的匹配模式是根据词性来设置的,但这里只提供根据关键词字数作为设置匹配模式的依据。
>如果按某些特定的关键词来划分倒是容易,但大家再去写N多的核心词,岂不是要疯掉!但这的确是个好点子,也许后续的版本会提供……
JSON 示例:
```
{
"custom":[
["1-5","广泛匹配"],
["5-8","短语(精确包含)"],
[8,"短语(同义包含)"],
["9-11","短语(核心包含)"],
["11-13","短语(同义包含)"]
],
"default":"精确匹配"
}
```
**说明:**
* 基本格式:`["关键词字数","匹配模式"]`
* `["11-13","短语(同义包含)"]`,表示关键词字数在 `11~13` 之间的关键词(*`不包含字数为 13 的关键词`*),这些词对应的匹配模式是 `短语(同义包含)`。
* `8`,如果是一个确定的字数可以直接写数字(可不加双引号)
* `"default"`:其他没有在限定字数范围内的关键词将使用默认匹配方式。例如示例中的没有定义的关键词将被设置为 `精确匹配`
* 不能更改的内容:键:`"custom"`、`"default"`;
* custom 里的条目可以增、减,default 最好设置一个模式,匹配模式留空的话结果将是空白。
* 如果 JSON 格式错误,输出的匹配模式列将会空白。
* 精细配置不是必须的,嫌麻烦可以直接在ppms列中直接写相应的匹配模式。
* 如果写了要进行精细配置,记得把JSON文件的完整路径填入相应的单元格。
* `这个配置并不是全局性的,它只对当前行有效`,也就是说你可以给每个推广单元(推广组)单独写一份JSON配置文件。
----
<h5 id="chujia-json">出价精细配置说明</h5>
关键词出价的精细控制,仅支持通过匹配模式来设置对应的出价。同样使用JSON文件配置。
JSON 示例:
```
{
"chujia":[
["精确匹配",2],
["广泛匹配",3],
["短语(精确包含)",9],
["短语(核心包含)",8],
["短语(同义包含)",5]
]
}
```
**说明:**
* 基本格式:`["匹配模式", 出价]`
* 不能删的内容:键:`chujia`
* 最好把所有匹配模式以及对应的出价都写好。PS:*变懒了,每多加一个可选项,我们都要做很多事情……,反正也就那么几个匹配模式*。
* 没有默认值,格式出错或者文件路径错误,输出的结果出价单元格都留空。
* 精细配置不是必须的,嫌麻烦可以直接在` chujia` 列中对应的单元格中直接写相应的匹配模式。
* 如果写了要进行精细配置,记得把JSON文件的完整路径填入相应的单元格。
* `这个配置并不是全局性的,它只对当前行有效`,也就是说你可以给每个推广单元(推广组)单独写一份JSON配置文件。
----
## BUG 预判(必看)
>预判说明已经发现了,只是……你懂的
手写CSV还是太要命了……,但从 Excel 导出又会有莫名其妙的东西导致工具不能工作。
建议的步骤:
* 先在 Excel 或者 WPS 表格中编辑好规则文件(`不要有多余的内容`,有些朋友有在空白的地方打草稿的习惯,`.xls`类文件可能没关系,但对`.csv`文件来说,影响重大)
* 另存为 `'CSV (逗号分隔符)(*.csv)'`或者 `'CSV UTF-8 (逗号分隔符)(*.csv)'` 类型的CSV文件。
* 用文本编辑器打开刚保存的CSV文件。(可能因编码问题而出现乱码的情况,请自行调整编码)
* 观察第一行,如果有 `column` 字样的内容,直接把第一行删掉,然后保存。
* 确保第一行的内容是我们先前说到的那些列标题: `groupBy,findBy,isGroupByLength`……