Jump to content

Wikipedia:Edit filter/Requested

From Wikipedia, the free encyclopedia
    Requested edit filters

    This page can be used to request edit filters, or changes to existing filters. Edit filters are primarily used to address common patterns of harmful editing.

    Private filters should not be discussed in detail. If you wish to discuss creating an LTA filter, or changing an existing one, please instead email details to wikipedia-en-editfilters@lists.wikimedia.org.

    Otherwise, please add a new section at the bottom using the following format:

    == Brief description of filter ==
    *'''Task''': What is the filter supposed to do? To what pages and editors does it apply?
    *'''Reason''': Why is the filter needed?
    *'''Diffs''': Diffs of sample edits/cases. If the diffs are revdelled, consider emailing their contents to the mailing list.
    ~~~~
    

    Please note the following:

    • Edit filters are used primarily to prevent abuse. Contributors are not expected to have read all 200+ policies, guidelines and style pages before editing. Trivial formatting mistakes and edits that at first glance look fine but go against some obscure style guideline or arbitration ruling are not suitable candidates for an edit filter.
    • Filters are applied to all edits. Problematic changes that apply to a single page are likely not suitable for an edit filter. Page protection may be more appropriate in such cases.
    • Non-essential tasks or those that require access to complex criteria, especially information that the filter does not have access to, may be more appropriate for a bot task or external software.
    • To prevent the creation of pages with certain names, the title blacklist is usually a better way to handle the problem - see MediaWiki talk:Titleblacklist for details.
    • To prevent the addition of problematic external links, please make your request at the spam blacklist.
    • To prevent the registration of accounts with certain names, please make your request at the global title blacklist.
    • To prevent the registration of accounts with certain email addresses, please make your request at the email blacklist.


    Filter unsourced tornado / hurricane rating changes

    [edit]

    Also, I know this can happen with hurricanes; see the edits on Hurricane Beryl from early on July 2 and you'll see why it needed protection. GeorgeMemulous (talk) 13:37, 23 October 2024 (UTC)[reply]

    (denied removed) and Deferred to requests for page protection. The first diff you present seems like it was made in good faith (?) based on the edit summary alone, though I'm not too familiar with tornados. This seems to be something that pending changes would help with more than a filter, though. EggRoll97 (talk) 23:46, 23 October 2024 (UTC)[reply]
    Disruption has been ongoing since 2023 and isn't limited to those four pages, even if they are the most recent targets. Let me assemble a few more diffs from various pages: 2023 Rolling Fork tornado, 2021 Western Kentucky tornado, Tornado outbreak of March 31, 2023, Tornado outbreak of December 10, 2021, Tornadoes of 2020, 2015 Rochelle-Fairdale tornado, Tornadoes of 2014, Tornadoes of 2013, Tornadoes of 2013 again, Tornado outbreak of November 17, 2013, and one, two, three, and four instances on 2013 El Reno tornado. There are probably more out there and there are certainly more to come as this is one of the easiest ways to vandalize a tornado article (literally changing one number). Also note the first diff was a reversion to a clean version after multiple previous disruptive edits, as are at least one of these new examples. All tornado and tornado outbreak articles are vulnerable to this and disruption often occurs years after the event leaves the news cycle so protection may not be the way to go in my opinion. GeorgeMemulous (talk) 00:22, 24 October 2024 (UTC)[reply]
    Doing... Fair enough. I'll see if I can whip up a preliminary start to this. EggRoll97 (talk) 00:29, 24 October 2024 (UTC)[reply]
    I'll summarize a few points as you said you aren't too familiar with the topic:
    • Tornadoes in the US and Canada are rated on the Enhanced Fujita scale, shortened to EF. This scale ranges from 0 to 5.
    • Tornadoes in the rest of the world are often rated on the International Fujita scale, shortened to IF. Again, 0 to 5.
    • Some countries still use the legacy Fujita scale, shortened to F. This goes from 0 to 12, but only 0 to 5 have ever been final.
    • All are formatted similarly: F0, EF1, IF2, F3, EF4, IF5.
    • Citations to verify typically come from the NCEI database or ESWD, but preliminary ratings often come from Twitter or a statement from the local NWS office.
    • The TORRO scale is more or less unused and obscure to the point where it's an unlikely disruption target.
    Cheers! GeorgeMemulous (talk) 00:48, 24 October 2024 (UTC)[reply]
    Update, Still doing..., though at a fairly slow speed. If anyone wants to take over on coding, absolutely go ahead. Things in the real world have been taking a slight bit of a toll over the last bit. EggRoll97 (talk) 22:34, 30 October 2024 (UTC)[reply]
    Update, probably don't see myself working on this, but a filter should be made. Not sure if anyone wants to pick this up by chance. EggRoll97 (talk) 04:55, 9 November 2024 (UTC)[reply]
    @EggRoll97 and GeorgeMemulous: Here is some basic filter code we could use:
    !("extendedconfirmed" in user_groups) &
    page_namespace == 0 &
    !(added_lines contains "<ref") & (
      scaleStr := "(?:E|I)?F[0-5]";
      removed_lines contains scaleStr &
      added_lines contains scaleStr
      !(removed_lines = added_lines)
    )
    
    What this should do is check if anyone is adding hurricane scale numbers and removing different ones without a source. Thanks, – PharyngealImplosive7 (talk) 17:50, 10 November 2024 (UTC).[reply]
    Testing at 1324 Looks good for testing. I've been busy over the last bit, but I can toss this in and keep an eye on it (by the way, an & was forgotten at the end of line 6). Thanks! EggRoll97 (talk) 23:44, 10 November 2024 (UTC)[reply]

    I think the current filter is broken that it could not catch the changes, even with FilterDebugger. contains would have to look for the entire phrase itself, while irlike is recommended for regex. Here's what I wrote instead:

    page_namespace == 0 &
    page_title irlike "hurricane|tornado" &
    !contains_any(user_groups, "extendedconfirmed", "sysop", "bot") &
    edit_delta <= 2 &
    (
        scaleStr := "\b[EI]?F[0-5]\b";
        not_intensity_num := "[^0-5]";
        removed_lines rlike scaleStr &
        added_lines rlike scaleStr &
        str_replace_regexp(added_lines, not_intensity_num, "") != str_replace_regexp(removed_lines, not_intensity_num, "")
    ) &
    !(summary irlike "^(?:revert|rv|undid)")
    

    I am pinging both PharyngealImplosive7 and EggRoll97. Codename Noreste 🤔 Talk 01:30, 11 November 2024 (UTC)[reply]

    I would suggest rlike since the scale ratings are usually marked with capital letters, but otherwise, looks good. Also do bots really make these changes? Anyways thanks for the help. – PharyngealImplosive7 (talk) 03:20, 11 November 2024 (UTC)[reply]
    Bots make a lot of edits that change a line that doesn't contain '<ref' so excluding bots near the top means the filter doesn't needlessly check all the way to removed_lines or added_lines.
    The last line's comparison seems unfinished, I think you meant to compare if the scale added is different than the one removed (i.e. not an unrelated change to the same line), but the current check is if removed and added lines are different, which is (surely?) always the case. – user usually at 2804:F14::/32, currently 143.208.239.58 (talk) 03:52, 11 November 2024 (UTC)[reply]
    Modified the suggested code to use rlike for the regex, and added a condition piece to only target pages with the title tornado. Codename Noreste 🤔 Talk 04:14, 11 November 2024 (UTC)[reply]
    Also, I noticed that you changed my original regex to (?:E|I)?F[0-5]{1,2}. Numbers above 5 are not used in any scale we are tracking, though they could exist theoretically on the Fujita Scale. As a result, I think you should delete the "{1,2}" part. – PharyngealImplosive7 (talk) 04:52, 11 November 2024 (UTC)[reply]
    Looks good, though I've added hurricane to the page_title check, since this appears to occur with hurricane ratings as well. EggRoll97 (talk) 04:53, 11 November 2024 (UTC)[reply]
    @EggRoll97: The regex also might need to be fixed, see my comment above. – PharyngealImplosive7 (talk) 04:56, 11 November 2024 (UTC)[reply]
    {1,2} denotes that one minimum or two maximum numbers are allowed in the regex, but I will remove it from the filter's regex. Codename Noreste 🤔 Talk 05:05, 11 November 2024 (UTC)[reply]
    And it's removed, PharyngealImplosive7. Note that I also changed (?:E|I)? to [EI]? as it only denotes a set of these two letters, so I don't think a non-capturing group is needed here. Codename Noreste 🤔 Talk 05:09, 11 November 2024 (UTC)[reply]
    Yes that looks good. The IP in the conversation suggested we modify the last line of the regex (whether added lines is the same as removed lines. Any ideas on how to fix that like the IP said? – PharyngealImplosive7 (talk) 05:12, 11 November 2024 (UTC)[reply]
    Maybe changing == to in would work? Codename Noreste 🤔 Talk 05:14, 11 November 2024 (UTC)[reply]
    Just saw the comment about needing the regex fixed. Sorry, I was working on the filter with an old version of this page, so I didn't see the comment about fixing it until now. I've just removed the {1,2} from the regex, and changed (?:E|I)? to [EI]?. EggRoll97 (talk) 05:16, 11 November 2024 (UTC)[reply]
    @EggRoll97: you should add word boundaries around that regex, this is matching %anything%F[0-5] making the [EI]? redundant.
    Anon does have a point about comparing added/removed_lines. This checks if somebody edits an existing line containing that sequence but not if that sequence has been changed (this is what OP wants) - e.g.: if somebody solely adds a period somewhere in a line containing that sequence, this will trip. XXBlackburnXx (talk) 11:09, 11 November 2024 (UTC)[reply]
    I've added the word boundaries, though I'm not sure if it's supposed to encase just the [EI] or the entirety of the string. Not sure about the comparison of added/removed. Codename Noreste's solution may work with changing == to in. EggRoll97 (talk) 13:29, 11 November 2024 (UTC)[reply]
    I'm pretty sure it is supposed to encase the entire string like you have done, but about the changing of the == to in, I can second that idea. – PharyngealImplosive7 (talk) 14:38, 11 November 2024 (UTC)[reply]
    And finally, this filter would probably also catch good-faith edits that are reverting this kind of vandalism, so I would suggest adding a line that says !(summary irlike "^(?:revert|rv|undid)") to the filter. – PharyngealImplosive7 (talk) 14:49, 11 November 2024 (UTC)[reply]
    I've updated the code. – PharyngealImplosive7 (talk) 15:33, 11 November 2024 (UTC)[reply]
    It's not the best, but you could technically replace all [^0-5] characters (with str_replace_regexp) in both added and removed lines with an empty string and then compare the resulting strings, supposedly what that then would be checking is if any 0 to 5 number was changed, removed or added in the edit (or swapped order...), which would probably reduce most of the potential false positives. A more ideal change would be to get all the matches and compare that, but I don't know how to do that efficiently. Mind you, this would replace the in version, though I'm unsure what that actually does.
    Something else: Checking if it's a revert is cheap (and reverts happen often), could move that up. – 2804:F1...DF:61D4 (::/32) (talk) 16:44, 11 November 2024 (UTC)[reply]
    Yeah I moved the revert code up, though I'm not sure about your other idea. If you could make some code, it would help more. Also pinging @EggRoll97: to see if he could implement the most recent changes to the filter. – PharyngealImplosive7 (talk) 17:39, 11 November 2024 (UTC)[reply]

    It's an idea based off of Special:AbuseFilter/1248, though instead of replacing the number to see if the rest is the same it would be something like:

    scaleStr := "\b[EI]?F[0-5]\b";
    not_intensity_num := "[^0-5]";
    
    //.. other code
    
    str_replace_regexp(added_lines, not_intensity_num, "") != str_replace_regexp(removed_lines, not_intensity_num, "")
    

    Essentially removing all characters except 0 to 5, comparing the resulting sequence of numbers to see if it changed. – 2804:F1...DF:61D4 (::/32) (talk) 19:11, 11 November 2024 (UTC)[reply]

    Yeah, I understand what you mean. I've gone ahead and implemented your suggestion with a few minor changes, but it would be great if an EFH/EFM could review the changes and implement them. – PharyngealImplosive7 (talk) 19:40, 11 November 2024 (UTC)[reply]
    At the risk of elongating this section even more, just curious, why !(x == y) instead of x != y? – 2804:F1...DF:61D4 (::/32) (talk) 19:54, 11 November 2024 (UTC)[reply]
    I mean in general it is used to clarify in a more clear way what is supposed to be equal and what is, but it really doesn't matter that much. I can change it if you like. – PharyngealImplosive7 (talk) 20:03, 11 November 2024 (UTC)[reply]
    Remodified the code again because this is getting nowhere. I placed the summary exclusion code at the very bottom, and intentionally placed page_namespace at the very top of the filter, and page_title at the second top for performance reasons. I removed the reference addition exclusion by replacing it with edit_delta <= 2 (equals or less than 2 bytes) since the edit_delta for these changes are going to be usually 0. Codename Noreste 🤔 Talk 20:39, 11 November 2024 (UTC)[reply]
    @Codename Noreste, PharyngealImplosive7, and 2804:F14:8092:C01:116E:4A01:43DF:61D4: Implemented the changes, with the exception of the edit_delta check replacing the added refs check. That would seem to me to hit every change to an intensity number even with new references? It seems best to just keep the added references check, no? EggRoll97 (talk) 20:46, 11 November 2024 (UTC)[reply]
    For now, I'm not sure of a good way to actually exclude sourced changes while logging unsourced ones. Codename Noreste 🤔 Talk 20:48, 11 November 2024 (UTC)[reply]
    Yes I was about to comment about that. After analyzing the edits provided, I noticed that some are above 2 in edit delta, especially when they vandalize other sections of the page. As a result, I believe we should keep the references check. – PharyngealImplosive7 (talk) 20:48, 11 November 2024 (UTC)[reply]
    However for now, now that the filter has been significantly modified, we should probably leave it to be tested until we get a few hits and can assess how it is doing. Courtesy ping to @Departure–: to let him know the filter should be more or less ready. – PharyngealImplosive7 (talk) 20:54, 11 November 2024 (UTC)[reply]
    It's now been in testing for a while, Departure–, and I'm seeing mostly good edits, with a few non-constructive ones mixed in. It's definitely a false positive rate too high for anything past logging (or maybe tagging, with consensus?). Just wanted to keep you up to date on it. EggRoll97 (talk) 05:51, 30 November 2024 (UTC)[reply]
    @EggRoll97 and Codename Noreste: I've run through the filter hits, and believe that I see the problem.
    The str_replace_regexp(added_lines, not_intensity_num, "") != str_replace_regexp(removed_lines, not_intensity_num, "") part of the filter thus seems not to be doing its job (getting rid of the edits that comprise most of the FPs). In the edits like this one or this one, the user added numbers not part of a hurricane code to the text, which combined with the fact that the added and removed lines contained a hurricane code (which was in the paragraph being edited) made the filter flag the edit.
    I believe that as a result, we need to modify the not_intensity_num variable's value, though I'm unsure how to do this exactly. Maybe we could just use the scaleStr variable and delete not_intensity_num? I believe that this approach would lead to a significant decrease in FPs (by seeing if lets say EF5 was changed into EF3). – PharyngealImplosive7 (talk) 03:43, 3 December 2024 (UTC)[reply]
    @EggRoll97: I also do not think we should graduate to tagging because the FP rate is much too high. Instead I think we should focus on refining the filter regex until its FP rate is much lower, and then think about moving up from just logging. – PharyngealImplosive7 (talk) 03:44, 3 December 2024 (UTC)[reply]
    Yeah, my comment of with consensus was more of a strong discouragement of this becoming a tagging filter at the moment. The FP rate is way too high, and I think I'm only seeing about 5 unconstructive edits out of the 30 or so hits. EggRoll97 (talk) 04:26, 3 December 2024 (UTC)[reply]
    It's a bit late at night, so I could wake up in the morning and realize this is a terrible idea, but what if we encased the not_intensity_num in a word boundary, so
    not_intensity_num := "[^0-5]";
    +
    not_intensity_num := "\b[^0-5]\b";
    instead of the current? I'm not sure if it would fix it though, so I'll run regex testing when I'm off work tomorrow if I don't wake up and realize it's a stupid idea. EggRoll97 (talk) 04:30, 3 December 2024 (UTC)[reply]
    Currently at a class at my college, and I can't use my laptop at the moment so I'll try the regex testing myself when I have some down time. Codename Noreste 🤔 Talk 16:32, 3 December 2024 (UTC)[reply]
    The idea of the replacement code is that it finds changes (any change, including deleting, adding, moving it) to 0 to 5 numbers, this is because the scaleStr check did not check if the numbers changed, any change to a line that included, for example, an EF5, would have triggered the filter. As I mentioned a more ideal check would be to leave only the tornado rating matches in the comparison, but I'm not sure how to do that.
    My one recommendation right now would be to change the name of the filter, add a 'Possible' at the start. – 2804:F1...F5:2A09 (::/32) (talk) 17:16, 3 December 2024 (UTC)[reply]
    Example of what I imagine the replacement code does:
    - converts added_lines into '010345'
    - converts removed_lines into '010445'
    - sees if the resulting sequence changed – 2804:F1...F5:2A09 (::/32) (talk) 17:34, 3 December 2024 (UTC)[reply]
    I'm pretty sure that if we hypothetically replaced not_intensity_num with scaleStr, it would first convert lets say the added_lines to "EF5", the removed_lines to "EF3", and see if they are different, it would match. However, this approach comes with the problem that it would match an edit that only added or removed a hurricane code but didn't change anything per se. As a result of FPs in any approach we take, I agree with the IPs name change suggestion. – PharyngealImplosive7 (talk) 20:12, 3 December 2024 (UTC)[reply]

    Add "rizzmas" to 614

    [edit]

    Christmas is coming around and "rizzmas" vandalism is ramping up. See this for a recent example. C F A 16:53, 8 December 2024 (UTC)[reply]

    Fair enough, and the potential for FPs seems low (this isn't a legitimate word anyways). All we need to do is change the current regex on 614 that blocks "rizz" content to \brizz+(?:\b|e[rd]|ful|ing|l[ey]|y|mas) and this type of vandalism should be blocked. – PharyngealImplosive7 (talk) 18:29, 8 December 2024 (UTC)[reply]
    Requires more information How bad is this overall? If it's just a small number popping into RecentChanges, I don't think it necessarily is going to overwhelm RC patrollers. EggRoll97 (talk) 17:03, 10 December 2024 (UTC)[reply]

    Brainrot account creation

    [edit]

    I've seen a lot of accounts like this one that use brainrot terms and usually are bad faith accounts that just vandalize wikipedia. As a result, I think we should create a filter similar to 54 (hist · log) with the regex of 614 (hist · log). It should look something like this:

    action contains "createaccount" &
    !contains_any(user_rights, "override-antispoof", "tboverride", "tboverride-account") &
    (
    abuseStr := "f\s*r\s*e\s*e\s*d\s*i\s*d\s*d\s*y|y\s*o\s*[lo\s]+s\s*w\s*[4ae]+\s*g+ // etc, the rest of the 614 regex;
    (accountname irlike abuseStr)
    )
    

    PharyngealImplosive7 (talk) 17:14, 14 December 2024 (UTC)[reply]

    If this request is implemented, it should also exclude users with tboveride and tboverride-account, as this is essentially equivalent to an addition to the title blacklist. JJPMaster (she/they) 03:43, 15 December 2024 (UTC)[reply]
    Added your suggestion to the proposed code. – PharyngealImplosive7 (talk) 21:55, 15 December 2024 (UTC)[reply]
    Sorry, I missed an "r" in tboverride, so could you add that? JJPMaster (she/they) 22:03, 15 December 2024 (UTC)[reply]
    PharyngealImplosive7, ccnorm(accountname) rlike abuseStr will not work for this lowercased regex, so use accountname irlike abuseStr instead if we plan to implement this new filter. But for now, I'm not seeing that many vandalism-only accounts with brainrot usernames on the recent changes list. Codename Noreste 🤔 Talk 03:34, 16 December 2024 (UTC)[reply]

    Prevent template vandalism

    [edit]
    • Task: Prevent template vandalism (exactly what it says on the tin).
    • Reason: Template vandalism can be extremely disruptive since templates are usually used on multiple pages and breaking that template breaks all of the pages that use the template. Many highly used templates are automatically semi-protected or template-protected by User:MusikBot II, but template vandalism still occurs nevertheless.
    • Diffs:

    Duckmather (talk) 05:59, 15 December 2024 (UTC)[reply]

    NOTE: There are a lot of pages in templatespace that aren't templates per se. These include subpages like /doc, /sandbox, and /testcases, and also for some reason that I don't understand all DYK nominations occur in subpages of Template:Did you know. These should probably be excluded from the filter, if there is one. Duckmather (talk) 06:00, 15 December 2024 (UTC)[reply]
    At least the blanking should probably be on a filter. Nobody (talk) 06:24, 16 December 2024 (UTC)[reply]
    [edit]

    Nobody (talk) 12:47, 16 December 2024 (UTC)[reply]

    What are the urls of these incompatible wikis? – 2804:F1...69:1A4C (::/32) (talk) 15:09, 16 December 2024 (UTC)[reply]
    Mirrors and forks lists some of them, I don't think its even possible to make a complete list. There's also Fandom, which has both, compatible and non-compatible licenses for their wikis.[1] Nobody (talk) 15:36, 16 December 2024 (UTC)[reply]

    Here's the basic code for it. (With a few example urls of mirrors that aren't compatible.)

    Code
    equals_to_any(page_namespace, 0, 2, 118) &
    !contains_any(user_groups, "extendedconfirmed", "sysop", "bot") &
    !(summary irlike "^(?:revert|rv|undid)") &
    (
        url := "[0-9]{5}\.us|99colors\.net|alchetron\.com|celebsagewiki\.com|en-us\.nina\.az|knowpia\.com|profilpelajar\.com|wikizero\.org";
        
        added_lines irlike url &
        !(removed_lines irlike url)
    )
    

    Nobody (talk) 17:44, 16 December 2024 (UTC)[reply]

    1AmNobody24, I've modified the code to also exclude removed_lines. Without it, the user would get flagged regardless if they edit a part of a section containing the website or not. Codename Noreste 🤔 Talk 23:17, 16 December 2024 (UTC)[reply]
    [edit]
    • Task: This is related to the persistent issue with talk page junk, some of which is addressed by Special:AbuseFilter/1245. I am proposing a filter to catch a further subset of them, most likely generated by students, that follow a specific but extremely common pattern:
    • The page is not a user talk page, a sandbox page, or any subpage of Wikipedia:Reference desk
    • The editor is an IP
    • The subject line should be a school subject from a predetermined list. Some subjects that are common here: "English", "Math", "Mathematics", "Maths", "Geography", "History", "Social studies", "Chemistry", "Civics", "Physics", "Biology", "Life science", "Earth science".
    • One or more of the following should apply to the comment body:
    • Comment filter 1: Edits that are really short (fewer than 5 words or thereabouts)
    • Comment filter 2: Edits that start with certain phrases: "Definition of", "Write", "Information about", etc.
    • Comment filter 3: Edits that start with the phrases "what is" or "what are" (possibly others) and are somewhat short (fewer than 10-20 words? idk)
    This specific subset is clearly related to student assignments -- WikiEd doesn't think it's related to their assignments specifically -- there is a correlation but it's probably just school, in general. For instance this diff seems to be associated with this assignment or a very similar one.
    I suspect some of these are produced by LLMs, text-to-speech, search integrations, or other automated tools because of the time frame (the date they really started pouring in lines up almost exactly with the date GPT-3, ChatGPT, etc. came out); because of the formulaic predictability of the pattern; and because of certain tells in some of these suggesting they're overheard conversations, ChatGPT prompts, etc. These edits have almost no utility and usually go unanswered; if they are answered, it's usually to scold the user, who almost never responds.
    There are literally thousands of these, cleaning them up is a huge task, and that task also has a deadline. If nobody cleans them up before the page is archived (which is likely to happen because school-curriculum talk pages are often long, and because archiving is often done by bots who don't check what they're doing) then they will be stuck there forever. (I cannot emphasize enough how arbitrary and asinine that is, but whatever.). While I'm willing to clean up as much of the existing stuff as I catch in time, it would be nice to stop the floods.
    I'm happy to add to or refine this filter to reduce false positives and catch more false negatives, this is off the top of my head. The real solution is to either find a technological or UI-design cause, but this subset of edits is just so predictable that a filter might make sense.
    If you want to find more -- or to help clean them up -- the relevant search pattern is insource:"UTC [subject]". A search pattern more prone to false positives is insource:"[subject or common one-word edit] Special".

    Gnomingstuff (talk) 19:04, 19 December 2024 (UTC)[reply]