来自代码

时间:2016-05-02 17:35:36

标签: python regex nlp nltk data-cleaning

我需要从无用的代码或异常中清除大量文本文件,以便进行一些文本分析,例如:

start-text:7001

  1. 添加工作集
  2. 在该工作集中搜索某些内容
  3. 删除工作集
  4. 通过上下文菜单搜索
  5. ==>

    日志:星期一12月17日17:23:54 GMT + 01:00 2001 4 org.eclipse.ui 0 java.util.ConcurrentModificationException

    java.util.ConcurrentModificationException
        at java.util.AbstractList$Itr.checkForComodification(AbstractList.java(Compiled
    Code))
        at java.util.AbstractList$Itr.next(AbstractList.java(Compiled Code))
        at
    
    org.eclipse.jdt.internal.ui.search.JavaSearchSubGroup.fill(JavaSearchSubGroup.java:30)
        at org.eclipse.jdt.internal.ui.search.JavaSearchGroup.fill(JavaSearchGroup.java:51)
        at org.eclipse.jdt.internal.ui.actions.ContextMenuGroup.add(ContextMenuGroup.java:25)
        at
    org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.menuAboutToShow(PackageExplorerPart.java:498)
        at org.eclipse.jface.action.MenuManager.fireAboutToShow(MenuManager.java:220)
        at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:253)
        at org.eclipse.jface.action.MenuManager.access$0(MenuManager.java:250)
        at org.eclipse.jface.action.MenuManager$1.menuShown(MenuManager.java:280)
    

    < ==

    end-text:7001

    或:

    开始文字:7019

    20011211 使用断点在调试器下运行以下编译单元 表示。要使Windows达到断点,您必须拥有正确的dl 并运行辅助功能客户端。如果你不能用a复制这个问题 更简单的例子,我可以引导你完成这个步骤。 这个CU唯一不同的是它包含一个非公开类 以及公共课。当我在调试器中点击断点时,我得到了一个 对话告诉我,它无法找到非公开课的来源。该 对话框非常持久 - 我告诉它OK和取消,但它一直在进行 背部。即使我切换到Java透视图,我仍然会得到唠叨对话框 。如果我终止进程,则对话框不会返回。但重点是 调试器应该能够看到这个类的源 - 它是正确的 在我的eclipse工作区。它甚至不会隐藏在某个地方的某个罐子里 - 它非常 可见。我怀疑它是非公共类的东西让人感到困惑 源查找。如果有帮助,我会附上对话框。这是代码:

    ==>

    package test;
    
    import org.eclipse.swt.*;
    import org.eclipse.swt.graphics.*;
    import org.eclipse.swt.widgets.*;
    import org.eclipse.swt.layout.*;
    import org.eclipse.swt.events.*;
    import org.eclipse.swt.internal.win32.*;
    import org.eclipse.swt.internal.ole.win32.*;
    import org.eclipse.swt.ole.win32.*;
    
    public class AccessibilityTest {
        static Display display;
        static Shell shell;
        static FakeWidget fakeWidget;
    
        public static void main(String[] args) {
            display = new Display();
            shell = new Shell(display);
            shell.setLayout(new GridLayout());
            shell.setText("Accessibility Test");
    
            fakeWidget = new FakeWidget(shell, SWT.MULTI);
            fakeWidget.setLayoutData(new GridData(GridData.FILL_BOTH));
            shell.setSize(140, 110);
            shell.open();
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch())
                    display.sleep();
            }
        }
    }
    
    
    
    private static GUID IIDFromString(String lpsz) {
        char[] buffer = (lpsz + "\0").toCharArray();
        GUID lpiid = new GUID();
        if (COM.IIDFromString(buffer, lpiid) == COM.S_OK)
            return lpiid;
        return null;
    }
    

    < ==

    end-text:7019

    结果必须是:

    start-text:7001

    1. 添加工作集
    2. 在该工作集中搜索某些内容
    3. 删除工作集
    4. 通过上下文菜单搜索
    5. end-text:7001

      开始文字:7019

      20011211 使用断点在调试器下运行以下编译单元 表示。要使Windows达到断点,您必须拥有正确的dl 并运行辅助功能客户端。如果你不能用a复制这个问题 更简单的例子,我可以引导你完成这个步骤。 这个CU唯一不同的是它包含一个非公开类 以及公共课。当我在调试器中点击断点时,我得到了一个 对话告诉我,它无法找到非公开课的来源。该 对话框非常持久 - 我告诉它OK和取消,但它一直在进行 背部。即使我切换到Java透视图,我仍然会得到唠叨对话框 。如果我终止进程,则对话框不会返回。但重点是 调试器应该能够看到这个类的源 - 它是正确的 在我的eclipse工作区。它甚至不会隐藏在某个地方的某个罐子里 - 它非常 可见。我怀疑它是非公共类的东西让人感到困惑 源查找。如果有帮助,我会附上对话框。这是代码:

      end-text:7019

      在上述情况下,无用的文字介于" ==>"代码"< ==" (文中的箭头不是) ...我现在正在使用python ...但是我需要一个工具来清除代码或异常中的所有文本......它是否存在?因为我认为在这些肮脏的文本中制作nlp可能毫无用处和错误......

2 个答案:

答案 0 :(得分:0)

如果您使用的是python,则可以删除==>之间的文本。代码< ==通过读取==>的索引和< ==

示例:

str = "Hello, Welcome to ==>python<== programming"

opentag = "==>"

closetag = "<=="

Otag_index = str.find(opentag)

Ctag_index = str.find(closetag)

strToRemove = str[Otag_index+3:Ctag_index]

str = str.replace(strToRemove, '')

print(str)

答案 1 :(得分:0)

这是一个非常重要的问题,并且没有预定义的解决方案,因为它取决于您的数据。但是,存在将文本(自然语言,NL)与代码分开的不同方法,但不能保证它们在100%的时间内都能正常工作。

这是我的建议:

首先,您可以检查是否使用某种格式将代码与NL分开(如GitHubs markdown)并编译适当的正则表达式来检测代码。我使用以下正则表达式来清除从GitHub中提取的问题:

leading_whitespace_pattern = re.compile(r"^( {4,}|\t( |\t)*).*?$", re.MULTILINE)
backtick_pattern = re.compile(r"```.*?```", re.DOTALL)

以下是从Redmine中提取的问题的更多内容:

code_pattern = re.compile('<pre>.*?</pre>', re.DOTALL)
at_pattern = re.compile(r"@.*?@")

如果这对您不起作用,事情会变得棘手。您将需要开发更多匹配数据中可能出现的所有代码行的正则表达式,否则您将不得不使用更高级的方法。 Bacchelli等人。做了很多关于这个主题的研究,并使用了不同的技术和良好的结果。但是,我不确定他们是否公布了他们的实施:

  1. 甲。 Bacchelli,M。D'Ambros和M. Lanza,“从电子邮件中提取源代码”,第18届IEEE国际计划理解大会(ICPC 2010),2010年,第24-33页。
  2. 甲。 Bacchelli,A。Cleve,M。Lanza和A. Mocci,“使用Island Parsing从自然语言文档中提取结构化数据”,第26届IEEE / ACM自动软件工程国际会议(ASE 2011),2011年,第476页 - 479。
  3. ñ。 Bettenburg,B.Adams,AE Hassan和M. Smidt,“在非结构化数据中揭示技术工件的轻量级方法”,第19届IEEE国际计划理解大会(ICPC 2011),2011年,第185-188页。
  4. 祝你好运!

相关问题